当前位置:网站首页>opencv视频处理入门

opencv视频处理入门

2022-06-09 00:34:00 51CTO


文章目录

从相机捕捉视频

需要创建一个VideoCapture对象。它的参数可以是设备索引或者一个视频文件名。

      
      
import cv2 as cv
cap = cv. VideoCapture( 0) #0代表一个摄像头
print( cap. isOpened())

# 声明编码器和创建 VideoWrite 对象
fourcc = cv. VideoWriter_fourcc( * 'XVID')
out = cv. VideoWriter( 'output.mp4', fourcc, 20.0, ( 640, 480))

while( cap. isOpened()):
ret, frame = cap. read()
if ret == True:
# 写入帧
out. write( frame)
cv. imshow( 'frame', frame)
if cv. waitKey( 0) & 0xFF == ord( 'q'):
break
else:
break
# 释放已经完成的工作
cap. release()
out. release()
cv. destroyAllWindows()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

运行后就会自动保存每一帧合成视频。

cv.VideoCapture(0) 参数0代表一个摄像头,1则两个摄像头,笔记本只有一个摄像头。这里也可以传参视频,不仅仅是摄像头。
cap.read() 返回一个 bool 值(True/False)。如果加载成功,它会返回True。ret: 布尔值;
frame: 图像的三维矩阵;
这样 ret 存储布尔值, frame 存储图像。

cap.isOpened() 检查是否初始化。

从相机捕捉图片

按q退出,s保存图片为test.jpg

      
      
import cv2

cap = cv2. VideoCapture( 0) #摄像头开启,也可以传入mp4



# 相机的默认帧大小在Windows或Ubuntu中将为640x480

# cap.isOpened() 返回 true/false, 检查摄像头初始化是否成功
print( cap. isOpened())

# cap.read()
"" "
返回两个值
先返回一个布尔值, 如果视频读取正确, 则为 True, 如果错误, 则为 False;
也可用来判断是否到视频末尾;

再返回一个值, 为每一帧的图像, 该值是一个三维矩阵;

通用接收方法为:
ret, frame = cap. read();
ret: 布尔值;
frame: 图像的三维矩阵;
这样 ret 存储布尔值, frame 存储图像;

若使用一个变量来接收两个值, :
frame = cap. read()
frame 为一个元组, 原来使用 frame 处需更改为 frame[ 1]
"" "

while cap. isOpened():
ret_flag, img_camera = cap. read()
#摄像头图片大小
# print("height: ", img_camera.shape[0])
# print("width: ", img_camera.shape[1])
# print('\n')

cv2. imshow( "camera", img_camera)

# 每帧数据延时 1ms, 延时为0, 读取的是静态帧
k = cv2. waitKey( 1)

# 按下 's' 保存截图
if k == ord( 's'):
cv2. imwrite( "test.jpg", img_camera)

# 按下 'q' 退出
if k == ord( 'q'):
break

# 释放所有摄像头
cap. release()

# 删除建立的所有窗口
cv2. destroyAllWindows()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.


原网站

版权声明
本文为[51CTO]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15677788/5368407