В этом посте мы углубимся в Конвейер передачи данных RAiV, и с его помощью мы получим наше первое стереоизображение и перенесем его на ПК

Приготовьтесь к съемке

Получить стереоизображение с помощью веб-интерфейса очень просто. Просто войдите в учетную запись пользователя RAiV и нажмите "Capture Frame" на левой панели, вот и все. Однако захват изображения с помощью кода на Python немного сложен. С помощью Python вы должны получить пару стереоизображений непосредственно из конвейера передачи данных.

Конвейер передачи данных - процесс

Ядром RAiV является конвейер передачи данных. Каждый датчик на устройстве непрерывно передает конвейер передачи данных. Они прекращают передачу только при входе в веб-учетную запись пользователя RAiV. Даже в этом случае вы можете запустить конвейер передачи данных, используя кнопки "Capture Frame", "Snapshot", "Collect Samples" или "Live Stream".

Robotic Ai Vision Data Routing Pipeline Diagram
Маршрутизация данных с помощью искусственного интеллекта Схема трубопровода.

На диаграмме выше, пожалуйста, обратите внимание, что пользовательский код на 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

Захват стереоизображения с помощью RAiV

Обратите внимание, что размер изображений в формате bmp из RAiV составляет приблизительно 6 МБ. Поскольку мы передаем стереоизображение размером 12 МБ, в зависимости от используемой сети может наблюдаться задержка приема с ПК.

Метод передачи изображений, описанный в этом посте, предназначен только для демонстрации. Мы настоятельно рекомендуем вам использовать H.264 live stream в своих приложениях. Вы можете найти сообщение в блоге об этом на нашем сайте и пример кода в нашем репозитории на Github.

Что дальше?

Как начать обнаружение объектов

Обнаружение объектов: Запуск YOLOv11 на EdgeTPU

Проверьте наш Python SDK

RAiV Python SDK

Проверьте наш Репозиторий На Github Для Получения Примеров Кодов:

Наш Репозиторий на Github