Сделайте снимок: Получите свое первое стереоизображение
В этом посте мы углубимся в Конвейер передачи данных RAiV, и с его помощью мы получим наше первое стереоизображение и перенесем его на ПК
Приготовьтесь к съемке
Получить стереоизображение с помощью веб-интерфейса очень просто. Просто войдите в учетную запись пользователя RAiV и нажмите "Capture Frame" на левой панели, вот и все. Однако захват изображения с помощью кода на Python немного сложен. С помощью Python вы должны получить пару стереоизображений непосредственно из конвейера передачи данных.
Конвейер передачи данных - процесс
Ядром RAiV является конвейер передачи данных. Каждый датчик на устройстве непрерывно передает конвейер передачи данных. Они прекращают передачу только при входе в веб-учетную запись пользователя RAiV. Даже в этом случае вы можете запустить конвейер передачи данных, используя кнопки "Capture Frame", "Snapshot", "Collect Samples" или "Live Stream".
На диаграмме выше, пожалуйста, обратите внимание, что пользовательский код на python имеет прямой доступ к захваченным кадрам камеры через маршрутизацию данных. В этом разделе мы собираемся использовать этот маршрут передачи данных
Подготовьте и загрузите свой код на Python
Приведенный ниже код является простой демонстрацией того, как вы можете получить стереоизображение из конвейера передачи данных. Вкратце, в приведенном ниже коде мы используем:
- qCU_Net модуль python для обмена данными по сети TCP. Более подробная информация на нашем сайте./bpost_4.html ' >предыдущее сообщение.
- qCU_Data модуль python для доступа к конвейеру передачи данных и получения стереоизображения.
- функция raw_to_bmp_bytes из helper_funcs модуль python для преобразования необработанных графических данных в bmp-изображение
- base64 модуль python для передачи изображений в формате bmp по протоколу TCP
import qCU_Net
# For accessing data pipeline
from qCU_Data import qCUData
# For creating reformating raw image pair
from helper_funcs import raw_to_bmp_bytes
import base64
def main():
# Create data pipline interface
theQCUData = qCUData()
# Initialize the data pipeline interface
if not theQCUData.init():
print("Failed to initialize memory")
return
# Enter image acquisition loop
try:
while True:
# Get Stereo Frame Data
frame_data = theQCUData.getDataFrame()
if frame_data:
if 'error' in frame_data:
print(f"Error occurred: {frame_data['error']}")
else:
print("Acquired stereo frame")
# Get bmp from raw images
bmp_bytes_right = raw_to_bmp_bytes(frame_data[0], width=1600, height=1300, channels=3)
bmp_bytes_left = raw_to_bmp_bytes(frame_data[1], width=1600, height=1300, channels=3)
# Encode bmps to base64 strings
bmp_b64_right = base64.b64encode(bmp_bytes_right).decode('utf-8')
bmp_b64_left = base64.b64encode(bmp_bytes_left).decode('utf-8')
# Build payload for the transmission
payload = {
"bmp_b64_right": bmp_b64_right,
"bmp_b64_left": bmp_b64_left
}
qCU_Net.send_data_to_server("192.168.10.2", 12345, payload)
# Do not forget to delete the frames
del frame_data
else:
# Wait to avoid high CPU utilization on idle
time.sleep(0.1)
finally:
print("Loop Ended")
if __name__ == "__main__":
main()
Вы можете найти этот пример в нашем репозитории на Github со всеми необходимыми модулями. Прежде чем перейти к следующему разделу, пожалуйста, загрузите пример кода из репозитория github и загрузите его в RAiV через веб-интерфейс.
- Файлы примеров для RAiV:
- user_main.py
- helper_funcs.py
- Файл примеров для ПК:
- pc_receiver.py
Оперативное действие: передача данных по конвейеру
Теперь, чтобы запустить конвейер передачи данных, пожалуйста, нажмите кнопку "Snapshot". Как только изображение отображается в веб-интерфейсе, на стороне ПК также отображается пара стереоизображений a
Обратите внимание, что размер изображений в формате bmp из RAiV составляет приблизительно 6 МБ. Поскольку мы передаем стереоизображение размером 12 МБ, в зависимости от используемой сети может наблюдаться задержка приема с ПК.
Метод передачи изображений, описанный в этом посте, предназначен только для демонстрации. Мы настоятельно рекомендуем вам использовать H.264 live stream в своих приложениях. Вы можете найти сообщение в блоге об этом на нашем сайте и пример кода в нашем репозитории на Github.
Что дальше?
Как начать обнаружение объектов
Обнаружение объектов: Запуск YOLOv11 на EdgeTPUПроверьте наш Python SDK
RAiV Python SDKПроверьте наш Репозиторий На Github Для Получения Примеров Кодов:
Наш Репозиторий на Github