环境:python3.6,opencv4.4.0
代码实现功能:调用USB接口的摄像头;读取其中一帧内容并保存本地。
程序如下:
import cv2
def read_show():
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 25, (640,480))
index = 1
while(cap.isOpened()):
ret, frame = cap.read()
out.write(frame)
cv2.imshow('自定义, frame)
k = cv2.waitKey(0) & 0xFF
if k == ord("q"):
break
elif k == ord('s'):
cv2.imwrite('自定义保存路径+图片命名' + str(index) + ".jpg", frame)
index += 1
cap.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
read_show()
主要代码介绍:
(1)cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
通过参数0,1,2调用摄像头,也可以填写路径调用本地存储视频,后面的语句是对cv2的重置。
(2)fourcc = cv2.VideoWriter_fourcc(*'XVID')
(3)out = cv2.VideoWriter('output.avi', fourcc, 25, (640,480))
程序展示的是.avi格式视频的导入 ,25为FPS帧率,(640,480)为视频尺寸。不同格式视频导入略有差异,如:.mp4格式对应*‘mp4v’、‘output.mp4’;.flv格式对应*‘flv1’、‘output.flv’。
(4) ret, frame = cap.read()
(5) out.write(frame)
获取摄像头的画面,ret与frame是返回值,作用分别为:ret值决定了是否继续调用,布尔值;frame类似于实际的显示内容,后面可以将frame内容用cv2.imshow进行窗口显示。
(6)if k == ord("q"):
(7)elif k == ord('s'):
用if判断语句实现退出和保存功能,按q键退出;按s键将该帧画面保存本地指定路径。