【问题标题】:Webcam Capture Resolution issues网络摄像头捕获分辨率问题
【发布时间】:2011-01-03 22:42:25
【问题描述】:

我正在制作自己的网络摄像头延时摄影应用程序,但遇到了一些网络摄像头的问题。一个特别宣传它可以拍摄 5MP 的照片,但它运行的是原生 320x240(或一些可怕的东西),这是我得到的提要。

我使用的代码似乎可以很好地在网络上复制和粘贴,我用于访问网络摄像头的化身在这里 http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1339&lngWId=10 并使用avicap32访问网络摄像头,调用看起来像这样

mCapHwnd = capCreateCaptureWindowA("WebCap", 0, 0, 0, m_Width, m_Height, this.Handle.ToInt32(), 0);
SendMessage(mCapHwnd, WM_CAP_CONNECT, 0, 0);
SendMessage(mCapHwnd, WM_CAP_SET_PREVIEW, 0, 0);

我已经用另外两个网络摄像头进行了测试(一个内置在我的笔记本电脑中,一个是我玩过的旧摄像头),这两个摄像头的分辨率似乎都不错。

我已经修改了 Webcam_Capture 代码以尝试拍摄一张可笑的高分辨率图像

//private int m_Width = 320;
//private int m_Height = 240;
private int m_Width = 1600;
private int m_Height = 1200;
//private int m_Width = 3200;
//private int m_Height = 2400;

使用几种不同的分辨率,如上所示。

我的直觉告诉我,我需要做一些事情来让网络摄像头使用不同的分辨率,因为它似乎默认为某个原生值。

想法?

我很乐意发布更多我正在使用的代码,但这似乎是它的核心。 WM_SET_PREVIEW 可能需要解释一下,它是一个 API 常量。

public const int WM_CAP_CONNECT = 1034;
public const int WM_CAP_DISCONNECT = 1035;
public const int WM_CAP_GET_FRAME = 1084;
public const int WM_CAP_COPY = 1054;
public const int WM_CAP_START = WM_USER;
public const int WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41;
public const int WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42;
public const int WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43;
public const int WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44;
public const int WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45;
public const int WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46;
public const int WM_CAP_SET_PREVIEW = WM_CAP_START + 50;

欢迎任何想法! 抢劫

【问题讨论】:

  • 我猜你需要询问静止帧,而不是视频。
  • @Anon - 有趣的是,这就是 WM_SET_PREVIEW 所做的。 msdn.microsoft.com/en-us/library/dd743928(VS.85).aspx 我一直在查看其他可用的常量,但是,要了解它们是如何联系起来的并不容易。robg
  • 我同意 Anon 的观点,5MB 照片并没有说明视频分辨率。
  • @lpthnc 这个应用程序最终适用于学校 - 出价最低者获胜。 :P

标签: c# webcam resolution vfw


【解决方案1】:

没有显示设置相机的代码。因此,可能会应用默认的低分辨率。想法:

  1. 不使用 Video for Windows - API 已过时、受限且以编程方式不灵活。无论如何,WM_CAP_SET_VIDEOFORMAT 消息会设置网络摄像头并更改分辨率。考虑改用 DirectShow 或 Media Foundation。

  2. Windows SDK 为您提供了 GraphEdit 工具,您可以在其中以交互方式构建捕获管道,尤其是检查可用的分辨率。

  3. 检查相机规格:5 MP 静止图像并不意味着此分辨率可用于流式视频。视频分辨率可能是其中的 1/4,但肯定会比 320x240 更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多