学习笔记:C++环境下cv::VideoCapture.get()的宏使用


cv::VideoCapture m_video("F:/视频.avi");//这里把视频文件“视频.avi”存放在F盘目录下

m_video.get(propId);

这里我们将视频存放到m_video中,那么m_video.get()的参数propId为一个宏名,也可以是一个数字。

首先我们先总结一下宏名的特点

一:开头三个单词都是CV_CAP_PROP_

二:第四个单词开始有区分,对应具体功能或者对象,因宏而异

笔者本人主观上将宏名比作文件夹的名称,选择宏相当于去文件夹里找对应的函数文件。如果视频的某个特征组成非常复杂,需要用很多参数去形容,那么对于这个特征可能用一个参数表示比较困难,因此需要通过多个函数去表示这个特征,这也是为何有些宏名是四个单词而有些是五个的原因。

下面这段代码展示了CV_CAP_PROP_FRAME_COUNT(7)和CV_CAP_PROP_FPS(5)两个宏的具体作用,这段代码的功能是通过选择路径打开格式为avi或mp4的视频文件并在窗口中显示。

QString m_filename = QFileDialog::getOpenFileName(this,"打开视频","D:\\2_projects\\video_and_photo","(*.avi *.mp4)");

cv::VideoCapture m_video(m_filename.toStdString());//视频路径只能为String类型



int m_count = m_video.get(CV_CAP_PROP_FRAME_COUNT);//得到总帧数,用来计数以停止视频
int m_fps = m_video.get(CV_CAP_PROP_FPS);//得到帧率以控制视频速度
//m_video.get();//函数的两种使用方式

Mat frame,m_frame;
QImage fra;

while (--m_count)//m_count未减到0时持续循环,也即一直播放视频
{
            
      m_video.read(frame);

      cvtColor(frame,m_frame,CV_BGR2RGB);//将image由Mat格式转为QImage格式的必备操作(两者在内存中三通道的存储顺序不同)
      fra = QImage((const uchar*)(m_frame.data),m_frame.cols,m_frame.rows,m_frame.cols*m_frame.channels(),QImage::Format_RGB888);//强制类型转换将Mat转为QImage
 
      imshow("video", frame);
      waitKey(1000 / m_fps);//1000ms/帧率=每帧停留时间
}

笔者认为平时用的比较多的已经标红,后续还有一些我平时用不到的就先不添加以免扰乱初学者的视线

0:CV_CAP_PROP_POS_MSEC

        视频文件的当前位置以毫秒为单位播放

1:CV_CAP_PROP_POS_FRAMES

        帧索引,即下一个要捕获的帧的索引

2:CV_CAP_PROP_POS_AVI_RATIO

        视频文件的相对位置,0说明影片开始,1说明影片结束

3:CV_CAP_PROP_FRAME_WIDTH

        帧的宽度(对应图片像素的宽度)

4:CV_CAP_PROP_FRAME_HEIGHT

        帧的高度(对应图片像素的高度)

5:CV_CAP_PROP_FPS

        帧率,即每秒播放的帧的数量

6:CV_CAP_PROP_FOURCC

        编解码的4character字符代码

7:CV_CAP_PROP_FRAME_COUNT

        视频文件的总帧数

8:CV_CAP_PROP_FORMAT

        通过retrieve返回的帧,以Mat格式存放

9:CV_CAP_PROP_MODE

        

10:CV_CAP_PROP_BRIGHTNESS

        图像的亮度

11:CV_CAP_PROP_CONTRAST

        图像的对比度

12:CV_CAP_PROP_SATURATION

        图像的饱和度

13:CV_CAP_PROP_HUE

        图像的色调

14:CV_CAP_PROP_GAIN

        图像增益

15:CV_CAP_PROP_EXPOSURE

        曝光

16:CV_CAP_PROP_CONVERT_RGB

        该宏返回值为布尔类型,表示图像是否应转换为RGB

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值