【问题标题】:OpenCV's camera in Windows 8Windows 8 中 OpenCV 的摄像头
【发布时间】:2014-04-25 17:49:06
【问题描述】:

我在增强现实项目中使用 OpenCV。最初的平台是 Windows 7,一切正常——全屏 1080p。但是,当我在 Windows 8 上启动我的程序时,它会显示分辨率为 640x480 的实时视频。相同硬件上的相同程序,但使用不同的操作系统 Windows 显示不同的结果。我写了一个简单的测试程序,它显示了同样的问题:

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_CAP_PROP_FRAME_WIDTH, size.width); 有问题但我不知道如何解决它。

我会很高兴任何帮助。

附言

我有一些新信息: 我编写了使用 DirectShow 的测试程序。 它将网络摄像头“USB Web-camera Microsoft LifeCam Studio”捕获为具有 1080p 质量的全屏实时视频。然而,当我在 Windows 8 上启动这个程序时,它只显示了 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 上选择第二个。

我不知道如何解决它。我会很高兴任何帮助。

【问题讨论】:

  • 不是说你的cam的win7驱动支持调整大小,win8驱动不支持吗?我认为,您的 amstream 实验表明,这不是 opencv 的错,而是 win8 的驱动程序的错
  • 我不认为这是问题所在。我使用“USB Web-camera Microsoft LifeCam Studio”并在两个操作系统上使用相同的驱动程序(此驱动程序包含在网络摄像头的内存中)。

标签: opencv windows-8 camera


【解决方案1】:

经过一段时间后,我找到了解决这个问题的合适决定。我已经在我的项目中包含了 Media Foundation,并为此编写了简单的 C++ 类。关于它的短文显示在Capturing of video from web-camera on Windows 7 and 8 by Media Foundation

【讨论】:

  • 我有完全相同的问题,除了我使用 EmguCV(OpenCV 的 .NET C# 包装器)。
  • 我不太确定如何将您的工作集成到我的 .NET C# 项目中。你能提供一些方向吗?
  • 您能否创建缺陷和拉取请求,以便将您的代码集成到 OpenCV 中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2018-03-31
  • 2021-03-02
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多