在来自相机的视频上显示一个矩形
Showing a rectangle over a video from 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);
要获取图像,请从CvCapture
frame
、 capture
。
在这种情况下,capture
直接从摄像机拍摄,但您也可以使用以下方法从视频文件创建它: CvCapture *capture = cvCreateFileCapture("filename.avi");
然后,我将使用此处定义的函数绘制图像:http://opencv.willowgarage.com/documentation/drawing_functions.html
顺便说一下,Youtube视频中的形状不是矩形。这是一个平行四边形。
如果你想实时完成,那么你基本上可以把它放在一个循环中,得到一个框架,处理它,在上面绘制,然后输出图像,就像这样:
您将在循环之前包含以下内容: cvNamedWindow("Capture", CV_WINDOW_AUTOSIZE);
然后,在你的循环中,你会这样说: cvShowImage("Capture", 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
干杯!
- 输入值后,如何在一个括号下显示值,例如"{6,7,8,9}
- 仅显示链表的最后一个元素
- 在 QListView 中显示最后一个元素
- 我在C++中编写了一个方法来打印树类的预序,但它显示了分割错误
- 类中的一个变量显示,但另一个不显示
- 我编写了一个程序来显示数组的内容,但它显示的是它的地址
- 为什么断点显示数组的第二个值是一个大数字?额外学分工作
- 我已经做了一个程序来使用队列链C++表显示学生姓名和身高,现在我想以我不知道如何显示的顺序显示它
- 螺旋矩阵在最后一个"for"循环中中断,不显示任何内容
- 我有一个嵌套数组,它由另一个数组中的元素组成,这些元素分组为2.之后,我想显示每个元素的属性
- 当被一个输入分开时,有两个控制台输出同时显示
- 如何使QLineSeries/QXYSeries仅显示一个点标签
- 如何在 for 循环中显示一个结果
- 在QT C++编辑Qtable模型数据时,我需要得到一个小盒子,我需要显示编辑文本,这怎么可能?
- 如何在QListWidget中显示QStringList的每个项目QLabel和另一个QString?
- 我在视觉工作室中制作了一个类似胭脂的游戏,我想显示玩家的生命值
- C++显示两个区间之间的数字的程序检查一个数字是否可以表示为两个素数的总和
- Gtkmm - 关闭窗口然后显示另一个窗口的正确方法
- 将终端设置为原始模式:仅在按下下一个键后显示字符
- 你如何制作一个显示 24、60 和 1 的向量