gpt4 book ai didi

c++ - 在 OpenCV 中捕获和显示视频

转载 作者:太空宇宙 更新时间:2023-11-03 22:05:59 24 4
gpt4 key购买 nike

我在 Visual Studio2010 中使用 OpencV 2.2 版执行了一个简单的 C++ 程序来启动相机并同时显示视频。但是相机启动后只有窗口作为输出而不是视频捕获同时出现。这是我的代码.相机有问题吗..需要安装什么软件吗..请尽快提出建议。

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <conio.h>

int main()
{
CvCapture* capture =0;
capture = cvCaptureFromCAM(0);
if(!capture)
{
printf("Capture failure\n");
return -1;
}
IplImage* frame=NULL;
cvNamedWindow("Video");
cvNamedWindow ("Ball");
//iterate through each frames of the video
while(true)
{
frame = cvQueryFrame(capture);
if(!frame) break;
//frame=cvCloneImage(frame);
cvShowImage("Video", frame);
//Clean up used images
cvReleaseImage(&frame);
//Wait 50mS
int c = cvWaitKey(10);
//If 'ESC' is pressed, break the loop
if((char)c==27 ) break;
}
cvDestroyAllWindows() ;
//cvReleaseCapture(&capture);
return 0;

并且在输出窗口中有一个警告如下:

OpenCV 错误:未知 f 中的错误参数(无法识别或不支持的数组类型)unction, 文件 .......\ocv\opencv\modules\core\src\array.cpp, line 995

最佳答案

错误是因为你释放了cvQueryFrame返回的帧.文档中指出,视频的所有帧只使用一个图像缓冲区。因此,修改 cvQueryFrame 返回的帧将释放该缓冲区,后续调用将失败。

要解决此问题,只需删除 cvReleaseImage(&frame);

如果要修改框架,请使用 cvCloneImage 创建框架的深层拷贝.

此外,不要忘记在完成后释放捕获。

cvReleaseCapture(&capture); 

关于c++ - 在 OpenCV 中捕获和显示视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20834775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com