我在我的Augment Reality项目中使用OpenCV。原始平台是Windows 7,一切都很完美 - 全屏1080p。但是,当我在Windows 8上启动我的程序时,它显示分辨率为640x480的实况视频。同一个硬件上的相同程序,但与不同的操作系统Windows显示不同的结果。我写了简单的测试程序,它表现出了同样的问题:Windows 8中的OpenCV相机
include "highgui.h"
int main()
{
cvNamedWindow("VideoTest", CV_WINDOW_AUTOSIZE);
CvCapture *capture = cvCreateCameraCapture(0);
CvSize size = cvSize(1920, 1080);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH , size.width);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT , size.height);
IplImage* frame;
while(1)
{
frame = cvQueryFrame(capture);
if(!frame) break;
cvShowImage("VideoTest", frame);
char c = cvWaitKey(33);
if(c == 27) break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("VideoTest");
return 0;
}
我认为有问题 - cvSetCaptureProperty(捕获,CV_CAP_PROP_FRAME_WIDTH,size.width);但我不知道如何解决它。
我会很高兴任何帮助。
P.S.
我有一些新的信息: 我写了使用DirectShow的测试程序。 它将网络摄像头“USB网络摄像头Microsoft LifeCam Studio”捕捉到1080p质量的全屏实况视频中。但是,当我在Windows 8上启动此程序时,它仅显示640x480分辨率的实时视频。
简单测试表明,IAMStreamConfig的方法SetFormat()产生HRESULT值S_OK在Windows 7和E_FAIL在Windows 8.
它被示出在下一列表:
hr = streamConfTest->SetFormat(&mtGroup);
if(SUCCEEDED(hr))
{
printf("Success SetFormat(&mtGroup)");
}else
{
printf("Error SetFormat(&mtGroup)");
}
第一分支是选择在Windows 7上,第二个选择在Windows 8上。
我不知道如何解决它。我会很高兴任何帮助。
这不就是说,您的凸轮的win7驱动程序支持调整大小,而win8驱动程序不是?我认为,你的amstream实验显示,这不是opencv的错,但是win8的驱动程序是责怪 – berak 2013-03-01 08:00:26
我不认为这是问题。我使用“USB网络摄像头Microsoft LifeCam Studio”,并在两个操作系统上使用相同的驱动程序(该驱动程序包含在网络摄像头的内存中)。 – 2013-03-25 01:18:25