OpenCV笔记2:使用OpenCV获取视频,处理视频

1、学习目的
使用OpenCV(cv2)在Python中显示网络摄像头
(1)使用OpenCV从Camera捕获图像并显示图像
(2)使用Opencv python在视频流中逐帧处理视频图像。
2、使用的函数:
cv.VideoCapture()
cv.VideoWriter()
cv.CAP_PROP_FRAME_WIDTH:视频流中帧的宽度。
cv.CAP_PROP_FRAME_HEIGHT:视频流中帧的高度。

OpenCV加载的彩色图像处于BGR模式。但Matplotlib以RGB模式显示。

3、程序

import cv2

cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(* ' XVID ')
outport= cv2.VideoWriter(' output.avi ',fourcc,20.0,(640,480))

print(cap.isOpened())
while(cap.isOpened()):
    ret,frame = cap.read()
    if ret ==  True:
       print(cap.get(CV2.CAP_PROP_FRAME_WIDTH))
       print(cap.get(CV2.CAP_PROP_FRAME_HEIGHT))

       out.write(frame)

       gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
       cv2.imshow(' frame ',gray)

       if cv2.waitKey(1)& 0x FF  ==  ord(' q '):
          break
    else:
          break
     

cap.release()
out.release()
cv2.destroyAllWindows()

OpenCV笔记2:使用OpenCV获取视频,处理视频_第1张图片
OpenCV笔记2:使用OpenCV获取视频,处理视频_第2张图片
函数讲解:
(1)用摄像头捕获视频

cap = cv2.VideoCapture(0)
参数
0 为默认计算机默认摄像头
1 可以更换来源
参数可以是设备索引或视频文件的名称

(2)保存视频

cv2.VideoWriter(‘输出文件名’,指定FourCC代码,应传递每秒帧数(fps)和帧大小,isColor标志)
FourCC:一个4字节代码,用于指定视频编解码器
编解码器:
在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2。
          XVID更为可取.
          MJPG会产生高大小的视频.
          X264可以提供非常小的视频
在Windows中:DIVX(更多要测试和添加)

程序例子:
fourcc = cv2.VideoWriter_fourcc(* ' XVID ')

设置FourCC格式时,程序里采用了cv2.VideoWriter_fourcc()这个函数,若运行程序的时候显示这个函数不存在,可以改用了cv2.cv.CV_FOURCC这个函数

isColor标志:
如果是True,则编码器需要彩色帧,否则它适用于灰度帧

程序中的例子

 cv2.VideoWriter(' output.avi ',fourcc,20.0,(640,480))

(3)检查视频cap是否已初始化

cap.isOpened()

如果没有,使用cap.open()打开它。

cap.open()

(4)

 cap.read()
 
 返回值:bool(True / False)
 True:正确读取帧
  通过检查此返回值来检查视频的结尾。

(5)访问此视频的某些功能

cap.get(propId)

propId:是0到18之间的数字。
每个数字表示视频的属性(如果它适用于该视频)

(6)颜色空间转换

cv2.cvtColor(input_image,flag)
flag :转换类型。
BGR↔Gray的转换:cv2.COLOR_BGR2GRAY
BGR↔HSV的转换:cv2.COLOR_BGR2HSV

视频捕获属性
https://docs.opencv.org/4.0.0/d4/d15/…

代码列表可在fourcc.org中找到
http://www.fourcc.org/codecs.php

你可能感兴趣的:(OpenCV,python)