赞
踩
Opencv是一个C++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块。
OpenCV有两个python接口,老版本的cv模块使用OpenCV内置的数据类型,新版本的cv2模块使用NumPy数组
cv2.waitKey() 是一个键盘绑定函数。它的时间尺度是毫秒级。
函数等待几毫秒,看是否有键盘输入。在几毫秒之内
如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。
如果没有键盘输入,返回值为 -1。
如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。
它也可以被用来检测特定键是否被按下,例如按键 a 是否被按下
cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删除的窗口名。
- import cv2
-
- # 调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2
- cap = cv2.VideoCapture(0)
- # while True: # 死循环,让其一值读入图片
- while cap.isOpened(): # 判断是否打开摄像头成功 返回值为一个布尔值
- # _: 如果为true,则读取成功,反之不超过;frame: 读取的图片
- _, frame = cap.read() # 读取一帧一帧的图像,放回值是一个布尔值
- cv2.imshow("img", frame) # 进行显示
- key = cv2.waitKey(1) # 等待一会 单位为毫秒,表示间隔时间
- if key == ord('q'): # 按q键退出
- break
-
- cap.release() # 释放掉摄像头资源,防止在下次调用时不会出错
- cv2.destroyAllWindows() # 用来删除窗口的,关闭窗口并取消分配任何相关的内存使用
cv2.imread(file,flag)
需要特别注意的是图片读出来的格式是BGR,不是我们最常见的RGB格式
函数imread从指定文件加载图像并返回一个numpy.ndarray对象类型像素值。
如果图像无法读取(由于文件丢失,权限不当,格式不受支持或格式无效),函数返回一个空矩阵
第二个参数是一个标志,用于指定应读取图像的方式。
cv2.IMREAD_COLOR:加载彩色图像。图像的任何透明度都将被忽略。这是默认标志。 flags=1
cv2.IMREAD_GRAYSCALE:以灰度模式加载图像 flags=0
cv2.IMREAD_UNCHANGED:加载包含Alpha通道的图像 flags=-1
- import cv2
-
- # 载入图像
- img = cv2.imread(r"./car.jpg")
- # 查看像素矩阵
- # print("img:\n", img)
- # print("*"*50)
- # 查看形状 返回一个元组(高,宽,通道数)
- # print("shape:\n", img.shape)
- # print("*"*50)
- # 打印图像尺寸
- h, w = img.shape[:2]
- print(h, w)
cv2.imshow(窗口名,图像)
窗口会自动调整为图像大小。
第一个参数是窗口的名字
第二个是我们的图像。
可以创建多个窗口,但是必须给他们不同的名字
- img = cv2.imread(r"./car.jpg")
- cv2.namedWindow("Image") # 窗口的名字
- cv2.imshow("Image", img) # 显示图片
- cv2.waitKey(0)
- cv2.destroyAllWindows()
在OpenCV中,图像不是用常规的RGB颜色通道来存储的,用的是BGR顺序。
当读取一幅图像后,默认的是BGR,不过有很多转换方式可以利用。颜色空间转换函数可以用cvtColor()完成。
cv2.cvtColor(img_front,img_after)
img_front是需要转换的图片
img_after是转换成何种格式。
cv2.COLOR_BGR2RGB 将BGR格式转换成RGB格式
cv2.COLOR_BGR2GRAY 将BGR格式转换成灰度图片
cv2.COLOR_BGR2HSV 将BGR格式转换成HSV格式
- img = cv2.imread(r"./car.jpg")
- gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- cv2.imshow("origin", img) # 显示原始图片
- cv2.imshow("gray", gray) # 显示灰度图片
- cv2.waitKey(0)
- cv2.destroyAllWindows()
cv2.imwrite(file,img,num)
第一个参数:要保存的文件名
第二个参数:要保存的图像
第三个参数:它针对特定的格式:
对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95
对于png ,第三个参数表示的是压缩级别。默认为3.
注意:
cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。
- # 载入图像
- img = cv2.imread(r"./car.jpg")
- gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- cv2.imwrite('gary_car.jpg', gray)
cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor])
filename:保存的文件的路径
fourcc:指定编码器
fps:要保存的视频的帧率
frameSize:要保存的文件的画面尺寸
isColor:保存的是黑白画面还是彩色的画面
- cv2.VideoWriter_fourcc()
- 作用:指定视频编码格式
cv2.VideoWriter_fourcc(‘I’,‘4’,‘2’,‘0’):该参数是YUV编码类型,4:2:0色度子采样。兼容性好,但文件较大。文件扩展名.avi。
cv2.VideoWriter_fourcc(‘P’,‘I’,‘M’,‘1’):MPEG-1编码类型,文件扩展名.avi,可指定结果视频的大小
cv2.VideoWriter_fourcc(‘X’,‘V’,‘I’,‘D’):MPEG-4编码类型,视频大小为平均值,文件扩展名.avi,可指定结果视频的大小
cv2.VideoWriter_fourcc(‘T’,‘H’,‘E’,‘O’):OGGVorbis,音频压缩格式,有损压缩,类似于MP3等的音乐格式。兼容性差,件扩展名.ogv。
cv2.VideoWriter_fourcc(‘F’,‘L’,‘V’,‘1’):该参数是Flash视频,文件名后缀为.flv
等等
- cap = cv2.VideoCapture(0)
- fourcc = cv2.VideoWriter_fourcc('I', '4', '2', '0')
- out = cv2.VideoWriter(r'./output.avi', fourcc, 20.0, (640, 480), True)
- while cap.isOpened():
- ret, frame = cap.read()
- if ret is True:
- frame = cv2.resize(frame, (640, 480))
- out.write(frame)
- cv2.imshow('frame', frame)
- else:
- break
-
- key = cv2.waitKey(10)
- if key == ord('q'):
- break
-
- cap.release()
- out.release()
- cv2.destroyAllWindows()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。