gpt4 book ai didi

c++ - OpenCV2.2 cvCaptureFromCAM 问题...只返回绿屏。 (罗技 C260 摄像头)

转载 作者:太空宇宙 更新时间:2023-11-04 14:24:30 34 4
gpt4 key购买 nike

我正在编写一个需要使用 opencv 从网络摄像头捕获的程序。我使用的是罗技 C260 摄像头和 OpenCV2.2、Windows XP、QT Creator。这是我的代码示例:

int i = 0;

int arg = 0;
CvCapture *pCapturedImage = cvCaptureFromCAM(arg);

cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );
IplImage* img1= cvQueryFrame(pCapturedImage);
IplImage* img2;
IplImage* merged;
int MAX_FRAMES = 10;
for (int i = 0; i < MAX_FRAMES; i++){
pCapturedImage = cvCaptureFromCAM(arg);
if (!pCapturedImage){
printf("Uh oh");
}
img1 = cvQueryFrame(pCapturedImage);

printf("Query");
cvShowImage( "Example1", img1 );
cvWaitKey(0);
}
for (int i = 0; i < MAX_FRAMES; i++){
printf("Enter");
img2 = img1;
pCapturedImage = cvCaptureFromCAM(arg);
if (!pCapturedImage){
printf("Uh oh");
}else
printf("Capture");
img1 = cvQueryFrame(pCapturedImage);
printf("Query");
cvShowImage( "Example1", img1 );
cvWaitKey(0);
img1 = mergePhotos(img2, img1, i*25, i*25);
printf("Merge");
cvShowImage( "Example1", img1 );
cvWaitKey(0);

虽然它不起作用。我只得到前 10 次捕获的 a ,然后捕获变为空(我会发布图片,但我不允许这样做)。

我被难住了。我试过 cvCaptureFromCAM 和 cvCreateCameraCapture。我试过将 args 更改为该函数。我已经尝试了所有 USB 端口。

有人知道问题出在哪里吗?我非常感谢所有帮助。

最佳答案

您只需在循环外调用一次 cvCaptureFromCAM(或 cvCreateCameraCapture)来初始化和打开相机。然后你可以通过每次简单地调用 cvQueryFrame 来获得新的帧。 (将 cvCapture 视为帧源,而不是帧本身。)

可能存在一些操作系统限制,您不能多次打开相机资源...这可能是您描述的“仅 10 帧”的解释。

关于c++ - OpenCV2.2 cvCaptureFromCAM 问题...只返回绿屏。 (罗技 C260 摄像头),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177404/

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