c++ - 在来自相机的视频上显示一个矩形

标签 c++ opencv camera

基本上我需要从摄像机捕获视频,对帧进行一些处理,并为每个帧显示一个检测矩形。

示例:http://www.youtube.com/watch?v=aYd2kAN0Y20

如何将这个矩形叠加到摄像机 (usb) 的输出上? (c++)

最佳答案

我会使用 OpenCV,一个开源图像库,从网络摄像头/视频文件中获取输入。 这是有关如何安装它的教程:

http://opensourcecollection.blogspot.com.es/2011/04/how-to-setup-opencv-22-in-codeblocks.html

然后我会使用这段代码:

CvCapture *capture = cvCreateCameraCapture(-1);
IplImage* frame = cvQueryFrame(capture);

要获取图像,frame 来自 CvCapturecapture

在这种情况下,capture 是直接从摄像机中获取的,但您也可以使用以下视频文件创建它: CvCapture *capture = cvCreateFileCapture("filename.avi");

然后,我将使用此处定义的函数绘制图像:http://opencv.willowgarage.com/documentation/drawing_functions.html

顺便说一下,Youtube 视频中的形状不是矩形。这是一个平行四边形。


如果你想直播,那么你基本上可以把它放在一个循环中,获取一个帧,处理它,在它上面绘图,然后输出图像,就像这样:

你会在你的循环之前包含这个: cvNamedWindow("捕获", CV_WINDOW_AUTOSIZE);

然后,在你的循环中,你会这样说: cvShowImage("捕获", frame);

处理后。


编辑要在 C++ 中执行此操作,请像这样打开您的网络摄像头:

VideoCapture cap(0); // open the default camera
if(!cap.isOpened())  // check if we succeeded
    return -1;

要从文件初始化它,而不是放入相机索引,而是放入文件路径。

像这样从相机中获取一帧:

 Mat frame;
 cap >> frame; // get a new frame from camera

然后你可以在这里找到绘图函数: http://opencv.willowgarage.com/documentation/cpp/core_drawing_functions.html

干杯!

关于c++ - 在来自相机的视频上显示一个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11097728/

相关文章:

c++ - 为什么比第一次打开 USB2Serial 端口花费更长的时间

c++ - 无向加权稀疏图的所有对最短路径长度

c++ - 使用 LibTar 提取文件

opencv - 使用离散傅立叶变换 [OpenCV] 查找高频

iphone - 从移动浏览器启动相机

java - CWAC-相机在触摸屏上拍照

c# - 没有CLR的MFC中如何访问Winform ActiveX控件

c++ - OpenCV + 实感 : Visual Studio Link 2019 error

opencv - 如何将以像素为单位的焦距转换为毫米 (mm)?

iPhone 相机和照片编辑选项 - 自定义应用程序集成