Opencv读取摄像头及视频相关

以下是一个简单的程序:

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc,char**argv)
{
    VideoCapture capture(0);//从摄像头读入视频
                        //若要读取视频只需将0改成视频地址
    if(!capture.isOpened())//判断是否读入视频
    {
    cout<<"NO!"<<endl;
    return -1;
    }
    while(1)
    {
        Mat frame;//用于存放每一帧图像
        capture>>frame;//获取摄像头或者视频给的当前帧
        imshow("camera",frame);
        int c=waitKey(30);//大概是为啦和没帧所占时间持平
        if(c==27)break;
    }
    capture.release();//释放摄像机或者视频
    return 0;
}

VideoCapture类属于videoio的子模块。当创建对象后要用一个判断预计来判断是否读取成功。
检查是否读取视频文件名或者摄像头可以用isOpened()。
>>可以抓住每个帧,capture>>frame可以理解位摄像机一张图片一张图片的给frame,每新来一张就会覆盖原来的(毕竟图像的格式大小都是完全一致的)
waitKey(30):这里面的30我猜测应该是默认视频位30帧每秒,那么1000ms/30大概就是30毫秒的样子。所以这能保证视频按照原来的流畅进行并且你的按键都会被捕捉到吧..I guess.
27是键盘上Esc的ASCII码,当按下Esc可以终止。
OpenCV实例讲解中对release有如下说法(虽然我开始没加release也没出什么问题):如果不这么做,RAM内存会全部消耗掉。所以还是高大尚的加上好一些哇。 release函数还可以释放矩阵。
以上大概~是读取摄像头或者视频的基本操作啦,对视频的操作其实就是对每一帧图像的操作,所以当你想对视频简单操作时,可以先找几张图片操作成功后代码复制到循环中的适当位置应该就可以啦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值