视频操作
目标- 打开摄像头并捕获照片
- 播放本地视频,录制视频
import cv2
import numpy as np
import matplotlib.pyplot as ply
打开摄像头
cv2.VideoCapture(0)
: 创建VideoCapture,对象,0是摄像头编号
windows系统下,采用dshow流媒体机制时需要使用cv2.CAP_DSHOW作为cv2.VideoCapture(0, cv2.CAP_DSHOW)的参数
capture = cv2.VideoCapture(0)
cv2.namedWindow("thresh", cv2.WINDOW_AUTOSIZE)
while(True):
ret, frame = capture.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 二值化
# _, thresh = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY)
# 获取捕获的分辨率
# 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, height * 2)
cv2.imshow('frame', frame)
# 灰度图
# cv2.imshow('gary', gray)
# cv2.imshow('thresh', thresh)
if cv2.waitKey(1) == 27:
break
capture.read()
函数返回的第一个参数是一个布尔值,表示当前这一帧是否获取正确。capture.get()
可以获取摄像头的一些属性capture.set()
可以修改这些属性值
参数 | 含义 |
---|---|
0:CV_CAP_PROP_POS_MSEC | 视频文件的当前位置(毫秒) |
1:CV_CAP_PROP_POS_FRAMES | 基于0的索引的下一个要解码/捕获的帧。 |
CV_CAP_PROP_POS_AVI_RATIO | 视频文件的相对位置:0-胶片开始,1-胶片结束。 |
CV_CAP_PROP_FRAME_WIDTH | 视频流中帧的宽度。 |
CV_CAP_PROP_FRAME_HEIGHT | 视频流中帧的高度。 |
CV_CAP_PROP_FPS | 帧速率。 |
CV_ |