miaorn

视频信号时由一系列的图像构成的,这些图像称为帧,播放帧的速度称为帧速率,通常使用帧/秒表示,

即FPS(Frames Per Second),每秒出现的帧数

 

OpenCv提供cv2.VideoCapture()类来处理视频,

函数形式

捕获对象 = cv2.VideoCapture("摄像头ID号或者视频文件")

摄像头ID号,是摄像头的ID编号,若为-1则随即选取一个摄像头,若由多个摄像头则可以用数字“0“或者”1“、

捕获对象为cv2.VideoCapture()类的对象

 

函数 retval = cv2.VideoCapture.isOpened() 

该函数判断当前摄像头是否初始化成功

retval即是布尔值表示是否初始化成功

 

若摄像头初始化失败可用函数打开

retval  = cv2.VideoCapture.open(index)

index为摄像头的ID号 , 

retval为布尔值,表示是否成功

若在处理视频文件,则语法格式为

retval = cv2.VideoCapture.open(filename)

 

初始化成功后,捕获帧的函数

retval , image = cv2.VideoCapture.read()

image为捕获到的帧

retval 布尔值表示是否捕获成功

 

释放,在不需要摄像头时,要关闭摄像头,

None = cv2.VideoCapture.release()

 

属性设置

如果需要获取类对象的属性,或是更改类对象的属性,

函数 retval = cv2.VideoCapture.get(propId), 

propId对象类对象的属性,

如果设置对象属性则

retval = cv2.VideoCapture.set( peopId , value)

value 对应属性propId的值

propId 含义及值
cv2.VideoCapture.get(0) CV_CAP_PROP_POS_MSEC     视频文件的当前位置(播放)以毫秒为单位
cv2.VideoCapture.get(1) CV_CAP_PROP_POS_FRAMES 基于以0开始的被捕获或解码的帧索引
cv2.VideoCapture.get(2) CV_CAP_PROP_POS_AVI_RATIO 视频文件的相对位置(播放):0=视频开始,1=视频的结尾。
cv2.VideoCapture.get(3) CV_CAP_PROP_FRAME_WIDTH 在视频流的帧的宽度
cv2.VideoCapture.get(4) CV_CAP_PROP_FRAME_HEIGHT 在视频流的帧的高度
cv2.VideoCapture.get(5) CV_CAP_PROP_FPS 帧速率
cv2.VideoCapture.get(6) CV_CAP_PROP_FOURCC 编解码的4字-字符代码
cv2.VideoCapture.get(7) CV_CAP_PROP_FRAME_COUNT 视频文件中的帧数
cv2.VideoCapture.get(8) CV_CAP_PROP_FORMAT 返回对象的格式(返回的Mat格式的对象)
cv2.VideoCapture.get(9) CV_CAP_PROP_MODE 返回后端特定的值,该值指示当前捕获模式
cv2.VideoCapture.get(10)  CV_CAP_PROP_BRIGHTNESS 图像的亮度(仅适用于照相机)
cv2.VideoCapture.get(11) CV_CAP_PROP_CONTRAST 图像的对比度(仅适用于照相机)
cv2.VideoCapture.get(12) CV_CAP_PROP_SATURATION 图像的饱和度(仅适用于照相机)
cv2.VideoCapture.get(13) CV_CAP_PROP_HUE 色调图像(仅适用于照相机)
cv2.VideoCapture.get(14) CV_CAP_PROP_GAIN 图像增益(仅适用于照相机)(Gain在摄影中表示白平衡提升)
cv2.VideoCapture.get(15) CV_CAP_PROP_EXPOSURE 曝光(仅适用于照相机)
cv2.VideoCapture.get(16) CV_CAP_PROP_CONVERT_RGB 指示是否应将图像转换为RGB布尔标志
cv2.VideoCapture.get(17) CV_CAP_PROP_WHITE_BALANCE × 暂时不支持
cv2.VideoCapture.get(18) CV_CAP_PROP_RECTIFICATION 立体摄像机的矫正标注(目前只有DC1394 v.2.x后端支持这个功能)

 还有一些未列出请自行查阅

 

 1 import cv2                                                                       
 2 import numpy as np 
 3 cap = cv2.VideoCapture(1)
 4 while(cap.isOpened()):
 5     ret , frame = cap.read()
 6     cv2.imshow(\'frame\',frame)
 7     c = cv2.waitKey(1)
 8     if c == 27:
 9         break
10 cap.release()

 

 

 

 这里截取了一张图像

 

 

 

 

 

OpenCv中的cv2.VideoWriter类可以将图片序列保存成视频文件,也可以修改视频的各种属性,

函数形式

<VIdeoWriter object> = cv2.VideoWriter( filename , fourcc , fps , framsize [, isColor])

filename指定输出目标视频的存放路径和文件名,如果已经存在,则会覆盖

fourcc表示视频编/解码类型,  使用函数cv2.VIdeoWriter_fourcc()来指定视频编码格式,有4个字符参数,

  每一个编/解码器都有这样的标记,列出几个常用的

  注意:字符顺序不能弄混
  #cv2.VideoWriter_fourcc(\'I\', \'4\', \'2\', \'0\'),该参数表示未压缩的YUV颜色编码格式,色度子采样为4:2:0.

      该编码格式具有较好的兼容性,但产生文件较大,文件名后缀为.avi
  #cv2.VideoWriter_fourcc(\'P\', \'I\', \'M\', \'I\'),该参数是MPEG-1编码类型,文件名后缀为.avi
  #cv2.VideoWriter_fourcc(\'X\', \'V\', \'I\', \'D\'),该参数是MPEG-4编码类型,如果希望视频大小为平均值则可以选用,

      文件名后缀为.avi
  #cv2.VideoWriter_fourcc(\'T\', \'H\', \'E\', \'O\'),该参数是Ogg Vorbis,文件名后缀为.ogv
  #cv2.VideoWriter_fourcc(\'F\', \'L\', \'V\', \'1\'),该参数是Flash视频,文件名后缀为.flv

  也可以用如下表示

  fourcc = cv2.VideoWriter_fourcc(*\'I420\')

 

fps帧速率

framsize每一帧的长和宽

isColor表示是否为彩色图像

 

如有

out = cv2.VideoWriter( \'output.avi\' , fourcc , 20 , ( 1024 , 768))

 

None = cv2.VideoWriter(frame)

用于写入下一帧视频,通常情况下要求写入的图像格式为BGR格式,

如上式中 cv2.VideoWriter类 out

out.write(frame) , 存入名为output.avi

 

释放

None = cv2.VideoWriter.release()

out.release()

 

 1 import cv2
 2 import numpy as np                                                               
 3 cap = cv2.VideoCapture(0)
 4 fourcc = cv2.VideoWriter_fourcc(*\'I420\')
 5 out = cv2.VideoWriter(\'output.avi\',fourcc,20,(640,480)) 
 6 while(cap.isOpened()):
 7     ret , frame = cap.read()
 8     cv2.imshow(\'frame\',frame)
 9     if ret == True :
10         out.write(frame)
11         cv2.imshow(\'frame\',frame)
12         if cv2.waitKey(1) == 27:
13             break
14     else:
15         break
16 cap.release()
17 out.release()
18 cv2.destroyAllWindows()

 

视频操作基础

 1 import cv2                                                                       
 2 import numpy as np 
 3 cap = cv2.VideoCapture(0)
 4 while(cap.isOpened()):
 5     ret , frame = cap.read()
 6     frame = cv2.Canny(frame , 100 , 200 )
 7     cv2.imshow(\'frame\' , frame)
 8     c = cv2.waitKey(1)
 9     if c == 27:
10         break
11 cap.release()
12 cv2.destroyAllWindows()

 

 

分类:

技术点:

相关文章:

  • 2021-08-28
  • 2021-12-17
  • 2021-12-24
  • 2022-02-16
  • 2021-12-11
  • 2021-06-11
  • 2022-12-23
猜你喜欢
  • 2021-12-25
  • 2021-11-27
  • 2021-12-15
  • 2021-07-26
  • 2021-12-15
  • 2021-11-14
相关资源
相似解决方案