OpenCV';Windows 8中的s摄像头
我在增强现实项目中使用OpenCV。最初的平台是Windows7,一切都很完美——1080p全屏。然而,当我在Windows8上启动我的程序时,它显示了分辨率为640x480的实时视频。同一个程序在同一个硬件上,但在不同的操作系统窗口中显示不同的结果。我编写了一个简单的测试程序,显示了同样的问题:OpenCV';Windows 8中的s摄像头,opencv,windows-8,camera,Opencv,Windows 8,Camera,我在增强现实项目中使用OpenCV。最初的平台是Windows7,一切都很完美——1080p全屏。然而,当我在Windows8上启动我的程序时,它显示了分辨率为640x480的实时视频。同一个程序在同一个硬件上,但在不同的操作系统窗口中显示不同的结果。我编写了一个简单的测试程序,显示了同样的问题: include "highgui.h" int main() { cvNamedWindow("VideoTest", CV_WINDOW_AUTOSIZE); CvCapture *captu
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(capture、CV\u CAP\u PROP\u FRAME\u WIDTH、size.WIDTH)存在问题;但我不知道如何解决它
我很高兴能得到任何帮助
附言
我有一些新信息:
我编写了使用DirectShow的测试程序。
它将网络摄像机“USB网络摄像机Microsoft LifeCam Studio”捕获为1080p质量的全屏实时视频。然而,当我在Windows8上启动这个程序时,它只显示分辨率为640x480的实时视频
简单测试表明,IAMStreamConfig的方法SetFormat()在Windows 7上生成HRESULT值S_OK,在Windows 8上生成E_FAIL
它显示在下一个列表中:
hr = streamConfTest->SetFormat(&mtGroup);
if(SUCCEEDED(hr))
{
printf("Success SetFormat( &mtGroup )");
}else
{
printf("Error SetFormat( &mtGroup )");
}
第一个分支在Windows 7上选择,第二个分支在Windows 8上选择
我不知道如何解决它。我很高兴能得到任何帮助。经过一段时间,我找到了解决这个问题的合适方法。我在我的项目中已经包含了媒体基础,并为此编写了简单的C++类。有关它的短文显示在上,这不就是说,您的cam的win7驱动程序支持调整大小,而win8驱动程序不支持吗?我认为,你的amstream实验表明,这不是opencv的错,但是win8的驱动程序应该归咎于我不认为这是问题所在。我使用“USB网络摄像头Microsoft LifeCam Studio”,并在两个操作系统上使用相同的驱动程序(此驱动程序包含在网络摄像头的内存中)。我有完全相同的问题,只是我使用的是EmguCV(.NET C#wrapper for OpenCV)。我不太确定如何将您的工作集成到我的.NET C#项目中。你能提供一些指导吗?你能创建一个缺陷和一个拉请求以便将你的代码集成到OpenCV中吗?