OpenCV-Python基础教程2-打开摄像头
Posted 墨麟非攻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV-Python基础教程2-打开摄像头相关的知识,希望对你有一定的参考价值。
一、打开摄像头
import cv2
# 打开摄像头并灰度化显示 capture = cv2.VideoCapture(0) while(True): # 获取一帧 ret, frame = capture.read() # 将这帧转换为灰度图 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow(‘frame‘, gray) # 如果输入q,则退出 if cv2.waitKey(1) == ord(‘q‘): break
cv2.VideoCapture(0)创建VideoCapture对象,参数0表示摄像头编号,如果你有两个摄像头,也可以传入1
# 获取捕获的分辨率 # propId可以直接写数字,也可以用OpenCV的符号表示 width, height = capture.get(3), capture.get(4) print(width, height) # 以原分辨率的一倍来捕获 capture.set(cv2.CAP_PROP_FRAME_WIDTH, width * 2) capture.set(cv2.CAP_PROP_FRAME_HEIGHT, width * 2)
640.0 480.0
我的摄像头分辨率是640 x 480.通过cap.get(propId)可以获取摄像头的一些属性。比如分辨率、亮度和对比度等。propId是从0~18的数字,我例举几个:
cv::VideoCaptureProperties {
cv::CAP_PROP_POS_MSEC =0,
cv::CAP_PROP_POS_FRAMES =1,
cv::CAP_PROP_POS_AVI_RATIO =2,
cv::CAP_PROP_FRAME_WIDTH =3,
cv::CAP_PROP_FRAME_HEIGHT =4,
cv::CAP_PROP_FPS =5,
cv::CAP_PROP_FOURCC =6,
cv::CAP_PROP_FRAME_COUNT =7,
cv::CAP_PROP_FORMAT =8,
cv::CAP_PROP_MODE =9,
cv::CAP_PROP_BRIGHTNESS =10,
3:高度, 4:宽度, 5:帧率, 8:格式, 9:模式。。。
想了解完整的属性列表可以参考:
VideoCaptureProperties。
也可以使用cap.set(propId, value)来修改属性值
二、播放本地视频
# 播放本地视频 capture = cv2.VideoCapture(‘4.视频展台的使用视频.mp4‘) while(capture.isOpened()): ret, frame = capture.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow(‘frame‘, gray) if cv2.waitKey(30) == ord(‘q‘): break
和打开摄像头一样,把摄像头编号换成视频的路径就可以播放本地视频。cv2.waitKey的参数0表示无限等待,数值越大,视频播放越慢,反之,则越快。通常设置25到30
三、录制视频
保存图片使用的是cv2.imwrite(),要保存视频,需要创建一个VideoWriter对象,需要传入四个参数
- 输出的文件名,如’output.avi’
- 编码方式FourCC码
- 帧率FPS
- 要保存的分辨率大小
FourCC是用来指定视频编码方式的四字节码
capture = cv2.VideoCapture(0) # 定义编码方式并创建VideoWriter对象 fourcc = cv2.VideoWriter_fourcc(*‘MJPG‘) outfile = cv2.VideoWriter(‘output.avi‘, fourcc, 25., (640, 480)) while(capture.isOpened()): ret, frame = capture.read() if ret: outfile.write(frame) # 写入文件 cv2.imshow(‘frame‘, frame) if cv2.waitKey(1) == ord(‘q‘): break else: break
四、小结
以上是关于OpenCV-Python基础教程2-打开摄像头的主要内容,如果未能解决你的问题,请参考以下文章
opencv-python——2(颜色分割(RGBHSV)读取摄像头和视频并保存)
以代码为基础的opencv-python学习 图片的加载以及视频展示
树莓派opencv-python环境搭建最全教程(从零开始)