Высокоскоростные вэбкамеры и Visual Basic 6.0

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ser100
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 01.12.2023 (Пт) 9:33

Высокоскоростные вэбкамеры и Visual Basic 6.0

Сообщение Ser100 » 01.12.2023 (Пт) 9:44

Я сейчас занимаюсь явлением интерференции света и, т.к. интерференционная картинка на матрице вэбкамеры в некоторых моих экспериментах изменяется очень быстро, то мне нужна запись этого процесса с использованием высокоскоростных камер. К сожалению такие камеры, которые могут снимать многие тысячи кадров в секунду стоят очень дорого и поэтому я стараюсь получить нужный результат используя дешевые вэбкамеры. При этом мне приходится работать с сигналами, изменяющими интерференционную картинку, с небольшой частотой, что сильно уменьшает эффект, который надо зарегистрировать в экспериментах, но это лучше чем ничего. Вот только и в этом случае у меня сейчас возникли проблемы, т.к. использовать стандартные программы для записи изображения с вэбкамер я не всегда могу, то я написал свою программу (вернее сказать, скомпилировал из кода, который нашел в интернете) на языке Visual Basic 6.0, которая позволяет делать снимки с экрана со строгой периодичностью, синхронизированной с частотой генератора сигналов периодически изменяющих интерференционную картинку. Внешний вид программы, где отсутствует код генератора сигналов, показан на скриншоте, а код можно скачать здесь http://modsys.narod.ru/Prog/Prog_Prog/WebCamGen_30_11_23.rar .

Изображение

При этом программа работает с обычными вэбкамерами, если сигнал кодируют в формате YUY2, но отказывается работать со скоростными даже в этом формате, а высокую скорость записи они дают если сигнал кодируют не в формате YUY2, а как MJPG или Motion JPEG (MJPEG). Как я понял это одно и тоже и поэтому, например, в моем стандартном диалоговом окне выбора формата изображения есть выбор только форматов YUY2 и MJPG. Например, сейчас моя программа отказывается работать с имеющейся у меня вэбкамерой ELM-USBFHD01M-SF https://aliexpress.ru/item/100500314519 ... 4339533247 , даже тогда, когда я выбираю формат YUY2, а записывать 120 кадров в секунду (fps) для картинки 640*480 она может только в форматом MJPEG (размер больше 640*480 меня не интересует). А сейчас я выписал еще и вэбкамеру ELM-USBGS800P03-KL16 https://aliexpress.ru/item/100500607863 ... 733epc13h4 , которая может записывать 720 fps форматом MJPEG (для картинки 160*120) и даже 480 fps форматом YUY2 (для картинки 160*120), но, быстрее всего, и она откажется работать с моей программой.

Я вообще то догадываюсь почему моя программа не может работать с кодировкой сигнала в формате MJPG (MJPEG), хотя все выполняется с использованием стандартных функций API. Быстрее всего дело в том, что Visual Basic 6.0 заточен на работу с файлами bmp. Но он все таки может читать файлы JPG, и, например, при коде Picture1.Picture = LoadPicture(C:\test.jpg) в Picture1 загружается файл записанный в формате JPG, т.е. что-то Visual Basic 6.0 все таки может делать с форматом JPG, который, как я думаю, является основой для формата MJPG. Хотя, если открыть файл B1913p16_form3.jpg и потом записать его как B1913.jpg (это две кнопки внизу программы), то запишется он все равно как bmp, т.к. его размер соответствует формату bmp, а не jpg. Поэтому у меня просьба помочь мне сделать, чтобы программа начала работать и с потоками данных в формате MJPG (MJPEG), но, естественно, если это не связано с через чур сложным кодом, т.к. тогда скорость записи будет тормозить сам код (ведь язык Visual Basic 6.0 не может похвастаться скоростью работы).

При этом некоторые программы рекомендуемые продавцом, например, программа AMCAP у меня работает с имеющейся у меня камерой ELM-USBFHD01M-SF, когда я выбираю в диалоговом окне формата изображения MJPG (выбора MJPEG там нет) и дает запись 120 fps (для картинки 640*480) и на Window7 64 bit и на Window7 32 bit и на Window XP. А вот, например, в рекомендуемой продавцом программе ContaCam есть выбор форматов MJPG и Motion JPEG (MJPEG), но она работает с этой вэбкамерой с этими форматами только при записи 30 fps для картинки 1920*1080, а при меньших размерах картинки тоже отказывается работать (хотя файл вроде бы создается, но после остановки пропадает), что позволяет сделать вывод о том, что проблема не в драйверах, а в самом коде программ. Тем более, что продавец и не рекомендует никаких особых драйверов для своих вэбкамер, а к тому же я и не нашел в интернете драйвера, например, для имеющейся у меня сейчас вэбкамеры ELM-USBFHD01M-SF (VID_32E4&PID_9230).

С наилучшими пожеланиями Сергей Юдин.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 34

    TopList