gpt4 book ai didi

c++ - c++ opencv上的灰色屏幕

转载 作者:可可西里 更新时间:2023-11-01 10:27:21 27 4
gpt4 key购买 nike

我搜索了很多有关我的简单问题的信息,但没有找到解决方案。当我运行我的代码时,黑色控制台显示相机帧大小,但在窗口中没有显示视频,它显示纯灰色屏幕。但是,如果我从 HDD 播放视频,则效果很好。请帮我一些。这是我的代码

  #include <iostream>

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

using namespace std;

int main(int argc, char** argv){

CvCapture *capture;
IplImage* img=0;
cvNamedWindow("Window");
capture = cvCreateCameraCapture( -1);
//capture = cvCaptureFromAVI("1.mp4");
//capture = cvCaptureFromCAM(-1);

int ext=0;

assert( capture );


if(capture==NULL){
cout<<"Cam Not Found!!!"<<endl;
getchar();
return -5;
}
while ( true ){

img = cvQueryFrame( capture );

cvSaveImage("1.jpg",img);

if (!img){
printf("Image not Found\n");
break;
}


cvShowImage("Window", img);
cvWaitKey(50);
}
cvReleaseImage(&img);
cvDestroyWindow("Window");
cvReleaseCapture(&capture);

return 0;
}

我使用 opencv 2.2 和 Visual studio 2010

最佳答案

有一件事显然是错误的,您需要将调用顺序更改为:

cvShowImage("Window", img);
cv::waitKey(20);

其次,您必须检查 cvQueryFrame() 是否成功:

img = cvQueryFrame( capture );
if (!img)
{
// print something
break;
}

编辑:

顺便说一句,我刚刚注意到您将 OpenCV 的 C 接口(interface)与 C++ 接口(interface)混合在一起。不要那样做!将 cv::waitKey(50); 替换为 cvWaitKey(50);

出于调试目的,如果 cvQueryFrame() 成功,我建议您使用 cvSaveImage() 将一帧存储到磁盘,如果该图像正常,则表示捕获程序实际上运行良好,问题出在其他地方。

关于c++ - c++ opencv上的灰色屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11465182/

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