Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Программирование графики > Захват фото с веб-камеры |
Автор: мыш 16.12.17, 17:28 |
Вопрос номер один. Решен. Всем привет! Проблема такая: моя камера (logitech c920) умеет делать фотки с разрешением 5k пикселей. А в захвате дает только 1920 максимум. Разрешение устанавливаю с помощью WM_CAP_SET_VIDEOFORMAT а захват WM_CAP_GRAB_FRAME. Меньше установить получается, а если больше - оно выдает 1920. Вопрос номер два. НЕРЕШЕН. Захваченную фотку сохраняю на диск. Но какой бы я не подставлял FilePath, из него почему то читается только первая буква. Одна. В резульате, если задать FilePath="D:\1.bmp' то сохраняется файл просто с именем 'D' и, ложится в папку программы. Без расширения ессно. Что это может быть? В MSDN четко сказано, что этот параметр - null terminated string, чего ж она хочет? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> procedure CaptureWebCam(FilePath: String); begin if CaptureWindow <> 0 then begin SendMessage(CaptureWindow, WM_CAP_GRAB_FRAME, 0, 0); SendMessage(CaptureWindow, WM_CAP_SAVEDIB, 0, longint(PAnsiChar(FilePath))); end; end; |
Автор: мыш 16.12.17, 19:37 |
Кажется я понял. Нужно запрашивать только те разрешения, которые может выдать камера. Например я пытался взять 640х480 а камера может только 864х480. Но 5168х2907 по прежнему не выходит сграбить, хотя через родную софтину оно такие снимки делает. Максимум что вышло - 2304х1296. Добавлено И тут понятно: оказалось что большие разрешения делаются программно, она больше 2мп не умеет. Всем спасибо |
Автор: B.V. 16.12.17, 20:27 |
Юникодную строку? Вероятно. |
Автор: мыш 18.12.17, 13:46 |
Нет, пробовал. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> var f:WideString; f := SaveDialog1.FileName; SendMessage(hWndC, WM_CAP_FILE_SET_CAPTURE_FILEA, 0, Longint(pwidechar(f))); то же самое |