Вложение WebCamGen_2.jpg больше недоступно.
В предыдущей теме "Инфразвук (создание буфера данных и воспроизведение)"
viewtopic.php?f=24&t=187325 я решил проблему генератора инфразвука, но сейчас возникли проблемы с вэбкамерой, т.к. скорость перемещения интерференционных полос по матрице вэбкамеры при проведение новых экспериментов с моим интерферометром оказалась очень большой и вэбкамера со скоростью записи 30 кадров в секунду (fps ) не может зафиксировать движение полос. Тогда я приобрел две более-менее скоростные вэбкамеры ELM-USBFHD01M-SF
https://aliexpress.ru/item/100500314519 ... 4339533247 , которая может писать 120 fps и ELM-USBGS800P03-KL16
https://aliexpress.ru/item/100500607863 ... 733epc13h4 , которая использует глобальный затвор и поэтому может записывать 640 fps форматом MJPEG (для картинки 160*120) и даже 480 fps форматом YUY2 (для картинки 160*120).
И тут возникла еще и другая проблема - моя программа, написанная с использованием VideoForWindows, т.е. VfW (avicap32.dll), работает только с форматом данных YUY2, но он не может обеспечить высокую скорость передачи данных. Тогда мне пришлось написать еще и код с использованием DirectShow (quartz.dll), где можно использовать и формат MJPEG.. Сейчас моя программа выглядит так, как изображено на скриншоте, а скачать исходный код на языке Visual Basic 6 вместе с исполняемым файлом можно здесь
http://modsys.narod.ru/Prog/Prog_Prog/WebCamGen.rar (в архиве есть библиотека FSFWrap.dll, которая нужна для работы с DirectShow. Ее надо поместить в папку C:\Windows\System32 и потом зарегистрировать).
Но, в связи с тем, что после того как буферы с данными инфразвука запущены на воспроизведение, я не могу контролировать работу компьютера, а я не уверен, что буферы будут воспроизводиться периодически точно через 1 секунду, у меня сейчас возникла новая проблема. Ведь, если буферы будут воспроизводиться не через 1 секунду, а через 1, 001 секунды, то меня уже это не устроит, т.к. при многократном повторение звука, например, 100 раз погрешность составит уже 0,1 секунды. Поэтому я сейчас ищу способ как проконтролировать время воспроизведения буферов звуковых данных, а еще лучше как узнать амплитуду сигнала в тот момент, когда я через заданный период времени делаю снимок с вэбкамеры.
Конечно, идеальным решением было бы как то узнать амплитуду сигнала на выходе звуковой карты, но как это сделать я не знаю. Да, в интернете есть несколько программ, которые определяют уровень сигнала, например, поступающего с микрофона, но там, как я понял, опять таки сигнал сначала записывается в буфер, а потом данные оттуда выводятся на экран. Т.е. здесь мы определяем амплитуду сигнала не в конкретный момент времени, а на каком то прошедшем отрезке времени. Можно, конечно, синхронно с основной вэбкамерой измерять напряжение каким то прибором на динамике, куда поступает сигнал от моего генератора, и фиксировать эти показания, например, еще одной вэбкамерой и накладывать это изображение на картинку с интерференционными полосами, снятую основной вэбкамерой, но боюсь, что это значительно снизит скорость работы программы. Есть и программы различных осциллографов, которые тоже можно было бы как то использовать при этом, но я не знаю можно ли их использовать непосредственно в коде моей программы.
С наилучшими пожеланиями Сергей Юдин.
- Вложения
-
- WebCamGen.rar
- (100.14 KiB) Скачиваний: 16
Последний раз редактировалось
Ser100 Сб дек 16, 2023 09:50:32, всего редактировалось 1 раз.