#注:读取图片的路径不能有中文,不然读取不出来
#注:直接使用imshow()函数图像会显示,但随即就会消失
要保证图片一直在窗口上显示要通过waitKey()函数
2.1创建窗口、改变窗口大小:cv2.nameWindow('窗口名字’,cv2.WINDOW_AUTOSIZE)
#注:cv2.nameWindow(),初始设定函数标签是cv2.WINDOW_AUTOSIZE,将标签改为cv2.WINDOW_NORMAL控制窗口大小。
一般情况下(就是不需要改变默认的窗口大小)这一步可以省略,因为cv2.imshow()自带创建窗口这个功能
2.2 键盘绑定函数: cv2.waitKey(0)
#注:waitKey()函数的参数为等待键盘触发的时间,单位为毫秒,其返回值为-1(表示没有键被按下)
传入0,指无限等待下一次键盘触发的事件
若特指某个键盘值才能退出:
while True:
if ord('q') = cv2.waitKay(0):
break
cv2.destroyAllWindow()
#键盘输入q退出
2.3 删除窗口:cv2.destroyAllWindows()
opencv是用C++写的,使用完必须释放内存
#注:()里不指定任何参数,则删除所有窗口,删除特定的窗口,往()输入特定的窗口值。
#dsize()的参数分别是宽度和高度
#返回三个参数:image.shape[0], 图片垂直尺寸
image.shape[1], 图片水平尺寸
image.shape[2], 图片通道数(一般值为3,色彩通道,cv2读取图片的通道是BGR,蓝绿红)
'图片名称’:指的是保存的位置+名称(只写名称则保存到当前py脚本的文件夹)
imge:指的是保存的对象
#注:cv2读取图片的通道是BGR,PIL读取图片的通道是RGB(红绿蓝)
灰度色彩空间是通过去除彩色信息来将其转换成灰阶,灰度色彩空间对中间处理特别有效,比如人脸识别。
所以灰度转换的作用是:转换成灰度的图片的计算强度得以降低。
矩形:cv2.rectangle(image, (X, Y, X+W, Y+H), color = (0, 255, 0), thickness = 2)
#imge:图片对象 (X,Y):是指矩形左上角的坐标 W是长,Y是宽 color中的参数是RGB色彩比例,thickness是指矩形线段的厚度
#cv2.cricle(image,center(x, y) , radius = r, color = (0, 255, 0), thickness = 2)
#(x ,y)是指圆心坐标 radius是圆的半径
使用cv2.VideoCapture(0)创建VideoCapture对象,参数0指的是摄像头的编号,所以会打开电脑摄像头,如果电脑上有两个摄像头的话,访问第2个摄像头就可以传入1,依此类推。
VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频,如cap = cv2.VideoCapture("../test.avi")
cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret
是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame
就是每一帧的图像,是个三维矩阵。
cv2.VideoCapture().set(propId, value)
功能:设置摄像头
参数:propId:设置的视频参数,
类型:整数,
可以参考 :cv2.VideoCapture().get()中的参数
value: 设置的参数
返回值:bool值:
true:不能确保摄像头已接受属性值
flase:摄像头未接受属性值
cap.set(4, 480)
参数:4:在视频流的帧的高度
480:宽度的数值
功能:把视频流的帧(图片)的高度调成480
参数是1,表示延时1ms切换到下一帧图像,对于视频而言;
参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停,;
参数过大如cv2.waitKey(1000),会因为延时过久而卡顿感觉到卡顿。
cv2.waitKay(1)得到的是键盘输入的ASCII码,esc键对应的ASCII码是27,即当按esc键是if条件句成立
while True:
if ord(27) = cv2.waitKey(1):
break
cv2.destroyAllWindow()