我在我的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