Я делаю свое приложение для веб-камеры, но у меня проблемы с некоторыми веб-камерами. Тот, в частности, рекламирует, что он может делать 5-мегапиксельные фотографии, но он работает с собственным разрешением 320x240 (или что-то ужасное), что является источником, который я получаю.
Я использую код, который, кажется, хорошо скопирован и вставлен в сеть, воплощение, которое я использую для доступа к веб-камере, здесь
http://www.planet -source-code.com / VB / скрипты / 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;
Любые идеи приветствуются!
robg