当前位置:   article > 正文

OpenCV基本函数使用--Python_cv2检测键盘输入

cv2检测键盘输入

介绍

Opencv是一个C++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块。
OpenCV有两个python接口,老版本的cv模块使用OpenCV内置的数据类型,新版本的cv2模块使用NumPy数组

一、打开摄像头

cv2.waitKey() 是一个键盘绑定函数。它的时间尺度是毫秒级。

函数等待几毫秒,看是否有键盘输入。在几毫秒之内

如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。

如果没有键盘输入,返回值为 -1。

如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。

它也可以被用来检测特定键是否被按下,例如按键 a 是否被按下


cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。

如果你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删除的窗口名。

  1. import cv2
  2. # 调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2
  3. cap = cv2.VideoCapture(0)
  4. # while True: # 死循环,让其一值读入图片
  5. while cap.isOpened(): # 判断是否打开摄像头成功 返回值为一个布尔值
  6. # _: 如果为true,则读取成功,反之不超过;frame: 读取的图片
  7. _, frame = cap.read() # 读取一帧一帧的图像,放回值是一个布尔值
  8. cv2.imshow("img", frame) # 进行显示
  9. key = cv2.waitKey(1) # 等待一会 单位为毫秒,表示间隔时间
  10. if key == ord('q'): # 按q键退出
  11. break
  12. cap.release() # 释放掉摄像头资源,防止在下次调用时不会出错
  13. 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

  1. import cv2
  2. # 载入图像
  3. img = cv2.imread(r"./car.jpg")
  4. # 查看像素矩阵
  5. # print("img:\n", img)
  6. # print("*"*50)
  7. # 查看形状 返回一个元组(高,宽,通道数)
  8. # print("shape:\n", img.shape)
  9. # print("*"*50)
  10. # 打印图像尺寸
  11. h, w = img.shape[:2]
  12. print(h, w)

三、显示图片 

cv2.imshow(窗口名,图像) 

窗口会自动调整为图像大小。

第一个参数是窗口的名字

第二个是我们的图像。

可以创建多个窗口,但是必须给他们不同的名字

  1. img = cv2.imread(r"./car.jpg")
  2. cv2.namedWindow("Image") # 窗口的名字
  3. cv2.imshow("Image", img) # 显示图片
  4. cv2.waitKey(0)
  5. 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格式

  1. img = cv2.imread(r"./car.jpg")
  2. gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  3. cv2.imshow("origin", img) # 显示原始图片
  4. cv2.imshow("gray", gray) # 显示灰度图片
  5. cv2.waitKey(0)
  6. 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 压缩级别越高图像越小。

  1. # 载入图像
  2. img = cv2.imread(r"./car.jpg")
  3. gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  4. cv2.imwrite('gary_car.jpg', gray)

六、保存视频

cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor])

filename:保存的文件的路径
fourcc:指定编码器
fps:要保存的视频的帧率
frameSize:要保存的文件的画面尺寸
isColor:保存的是黑白画面还是彩色的画面

  1. cv2.VideoWriter_fourcc()
  2. 作用:指定视频编码格式

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
等等

  1. cap = cv2.VideoCapture(0)
  2. fourcc = cv2.VideoWriter_fourcc('I', '4', '2', '0')
  3. out = cv2.VideoWriter(r'./output.avi', fourcc, 20.0, (640, 480), True)
  4. while cap.isOpened():
  5. ret, frame = cap.read()
  6. if ret is True:
  7. frame = cv2.resize(frame, (640, 480))
  8. out.write(frame)
  9. cv2.imshow('frame', frame)
  10. else:
  11. break
  12. key = cv2.waitKey(10)
  13. if key == ord('q'):
  14. break
  15. cap.release()
  16. out.release()
  17. cv2.destroyAllWindows()

七、源码获取

 GitHub Opencv简单使用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/367146
推荐阅读
相关标签
  

闽ICP备14008679号