Bu yazıda RAiV'in veri hattına daha derinlemesine ineceğiz ve bu hat üzerinden ilk stereo görüntümüzü alıp bir bilgisayara aktaracağız.

Yakalamaya Hazır Olun

Web arayüzünü kullanarak stereo görüntü yakalamak kolaydır. Sadece RAiV kullanıcı hesabınıza giriş yapın ve sol paneldeki "Capture Frame" düğmesine basın, hepsi bu. Ancak, Python kodu kullanarak görüntü yakalamak biraz daha karmaşıktır. Python ile stereo görüntü çiftini doğrudan veri hattından almanız gerekir.

Veri Hattı - İşlem

RAiV'in özü veri hattıdır. Cihazdaki her sensör sürekli olarak veri hattına veri gönderir. Sensörler, sadece RAiV kullanıcı web hesabına giriş yapıldığında veri göndermeyi durdururlar. Bu durumda bile, veri hattını tetiklemek "Capture Frame", "Snapshot", "Collect Samples" veya "Live Stream" düğmelerini kullanabilirsiniz.

Robotic Ai Vision Data Routing Pipeline Diagram
Robotik Yapay Zeka Görüşü Veri Yönlendirme Hattı Şeması.

Yukarıdaki şemada, kullanıcının Python kodunun veri yönlendirme yoluyla yakalanan kamera karelerine doğrudan erişebildiğini lütfen fark edin. Bu bölümde, bu veri yolunu kullanacağız.

Python Kodunuzu Hazırlayın ve Yükleyin

Aşağıdaki kod, veri hattından stereo görüntü nasıl elde edebileceğinizin basit bir gösterimidir. Kısaca, aşağıdaki kodda şunları kullanıyoruz:

  • TCP ağ iletişimi için qCU_Net Python modülü. Daha fazla ayrıntı için önceki yazımıza bakın.
  • Veri hattına erişmek ve stereo görüntü almak için qCU_Data Python modülü.
  • Ham görüntü verilerini bmp görüntüye dönüştürmek için helper_funcs Python modülünden raw_to_bmp_bytes fonksiyonu.
  • TCP üzerinden bmp görüntü iletimi için base64 Python modülü.
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()

Bu örneği, gerekli tüm modüllerle birlikte Github Depomuzda bulabilirsiniz. Sonraki bölüme geçmeden önce, lütfen örnek kodu github deposundan indirin ve web arayüzü aracılığıyla RAiV'e yükleyin.

  • RAiV için Örnek Dosyalar:
    • user_main.py
    • helper_funcs.py
  • PC için Örnek Dosya:
    • pc_receiver.py

Canlı Sunum: Veri işlem hattını besleme

Şimdi veri işlem hattını tetiklemek için lütfen "Snapshot" düğmesine basın. Görüntü web arayüzünde görüntülenir görüntülenmez, PC tarafı da bir stereo görüntü çifti alır ve görüntüler.

RAiV ile Stereo Görüntü Yakalama

RAiV'den gelen bmp görüntülerinin yaklaşık 6 MB boyutunda olduğunu unutmayın. 12 MB'lık bir stereo görüntü aktardığımız için, kullanılan ağa bağlı olarak PC alımında gecikme olabilir.

Bu yazıda gösterilen görüntü aktarım yöntemi yalnızca gösterim amaçlıdır. Uygulamalarınızda H.264 canlı akışını kullanmanızı tavsiye ederiz. Bununla ilgili bir blog yazısını sitemizde ve örnek kodu Github depomuzda bulabilirsiniz.

Sırada Ne Var?

Nesne algılamaya başlamak için:

Nesne Algılama: EdgeTPU'da YOLOv11 Çalıştırma

Python SDK'mızı inceleyin:

RAiV Python SDK

Örnek Kodlar İçin Github Depomuzu İnceleyin:

Github Depomuz