Çekimi Yapın: İlk Stereo Görüntünüzü Yakalayın
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.
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'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ırmaPython SDK'mızı inceleyin:
RAiV Python SDKÖrnek Kodlar İçin Github Depomuzu İnceleyin:
Github Depomuz