OPenCV4-视频捕获

OPenCV4-视频捕获

最近在项目中经常遇到需要操控相机,捕获相机每一帧图像进行图像处理。每次写视频捕获都是重复的代码。因此在这里记录一下,写一个视频捕获模板。方便以后直接使用,避免重复劳动。

#include 
#include 

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
    system("color F0");		// 更改输出界面颜色

    VideoCapture video(0);
    double frameWidth = 0;	// 视频帧宽度
    double frameHeight = 0;	// 视频帧高度
    int frameType = 0;	    // 视频帧数据类型   
    int frameChannels = 0;	// 视频帧通道数  
    bool isColor = false;	// 视频帧是否为彩色   

    if (!video.isOpened())
    {
        cout << "打开摄像头失败,请确认摄像头是否安装成功" << endl;
        return -1;
    }
    else
    {
        Mat frame;
        video >> frame;
        if (frame.empty())  // 判断读取图像是否成功	
            cout << "没有获取到图像" << endl;

        frameWidth = video.get(CAP_PROP_FRAME_WIDTH);
        frameHeight = video.get(CAP_PROP_FRAME_HEIGHT);
        frameType = frame.type();
        frameChannels = frame.channels();
        isColor = (frame.type() == CV_8UC3);		// 判断相机(视频)类型是否为彩色
    }
    cout << "视频中图像的宽度=" << frameWidth << endl;
    cout << "视频中图像的高度=" << frameHeight << endl;
    cout << "视频中图像的数据类型=" << frameType << endl;					// 判断相机(视频)类型
    cout << "视频中图像的通道数=" << frameChannels << endl;
    if (isColor)
        cout << "视频中图像是彩色图像(CV_8UC3)" << endl;
    else
        cout << "视频图像不是彩色图像" << endl;

    while (1)
    {
        Mat frame;
        video >> frame;
        if (frame.empty())  // 判断读取图像是否成功	
        {
            cout << "没有获取到图像" << endl;
            break;
        }

        imshow("video", frame);
        if (waitKey(1000 / 30) == 27)
            break;
    }

    return 0;
}

你可能感兴趣的:(OpenCV,c++,opencv)