独自のWebカメラタイムラッピングアプリケーションを作成していますが、一部のWebカメラで問題が発生しています。特に1つは、5MPの写真を撮ることができると宣伝していますが、私が取得しているフィードであるネイティブの320x240(または何か恐ろしいもの)を実行します。
私はウェブ全体にうまくコピーアンドペーストされているように見えるコードを使用しています。ウェブカメラへのアクセスに使用している化身はここにあり ますhttp://www.planet-source-code.com/vb/scripts/ ShowCode.asp?txtCodeId = 1339&lngWId = 10 で、avicap32を使用してWebカメラにアクセスします。呼び出しは次のようになります。
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);
私は他の2つのWebカメラ(1つはラップトップに組み込まれ、もう1つは私が蹴り回していた)でテストしましたが、どちらも立派な解像度を得ているようです。
ばかばかしいほど高解像度の画像を撮ろうとするように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;
どんなアイデアでも大歓迎です!奪う