Вобщем решил поиграть с веб камерой и чего то fps ~8-9 всего лишь, когда на сторонних прогах до 15-20 доходит, вот тривиальный кодес найденый в сети работает но.. в чём тормоз?.. Код (Text): FCapHandle:=capCreateCaptureWindow('Video', WS_CHILD or WS_VISIBLE, 0, 0, PICWIDTH, PICHEIGHT, webcamForm.Handle, 1); SendMessage(FCapHandle, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage(FCapHandle, WM_CAP_SET_PREVIEWRATE, 15000, 0); sendMessage(FCapHandle, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(FCapHandle, WM_CAP_SET_PREVIEW, 1, 0); .... SendMessage(FCapHandle, WM_CAP_SET_CALLBACK_FRAME, 0, 0); SendMessage(FCapHandle, WM_CAP_GRAB_FRAME_NOSTOP, 1, 0); p. s. да и непонятно как девайс выбрать если у меня к примеру 4 камеры...
Как не странно, возможный тормоз - камера. Попробуй уменьшить разрешение, поиграйся с выходным форматом, попробуй отключить функцию авто-адаптации яркости (на logitech врядли получиться). На driver connect указываешь другой driver index.
...задача вообще сводится к максимально быстрому получению потока с нескольких камер и обработкой уже в моей проге, вот надо это реализовать и желательно без всяких извратов типа DShow ибо влом разбираться со всякими перегруженными всякой хренью интерфейсами, может напрямую к какому либо дрову подключиться и вкуривать поток через нечто подобное DeviceIoControl? agrischuk насчёт авто-адаптации яркости, vfw таких средств походу не предоставляет выставляешь разрешение 640/480 вместо 800/600 дефолтовых и изображение тупо обрезается вместо уменьшения тут дело не в размере картинки или формате - сторонние проги и на 800/600 - 20 фпс выдают....
"Другие проги" могут выдавать фиктивные фпс. Для дешевой камеры 640x480 - это хороший вопрос. Некотрые умудряються делать stretch с меньших резолюций. Далее. Предоставляет оно два макроса capCaptureSetSetup, capSetVideoFormat. Советую начать с их изучения. В первом случае имеется замечательный параметр wStepCaptureAverageFrames который иммено отвечает за формирование кадров из нескольких сэмплов. С помощью второго макроса следует начать кепчурить с разрешения 320x240 (QVGA). Также выключить кепчуринг звука, поставить несколько буферов и т. д. Мне удавалось получать 30 фпс QVGA на дешевом logitech.
как то странно оно работает дёргаю capCaptureSequenceNoFile(FCapHandle); вроде чтоб на диск не скидывало ничего, и окно обновляется само по себе без моего участия... vfw вообще может просто дать буффер с данными и всё нигде ничего не отрисовывая.. я делал capSetCallbackOnFrame(Fcaphandle, @videoproc); но моя функция почемуто не получает управления... может у кого сорец найдётся толковый?...