[英]Raspberry Pi - Open CV & C++
我們正在學校里做一個需要進行基本圖像處理的項目。 我們在項目中要做的是使用Raspberry Pi每50毫秒(或更短的時間)拍攝一張圖片,並進行實時圖像處理。
我們試圖將raspistill包含在我們的python程序中,但到目前為止沒有任何效果。 我們項目的目標是在圖像處理的幫助下設計一輛遵循藍色/紅色/任何彩色線條的RC汽車。
我們認為制作一個進行所有圖像處理必要的python程序是一個好主意,但是我們目前正在努力將記錄的圖像引入python程序中。 有沒有辦法用picamera做到這一點,還是我們應該嘗試其他方式?
預先感謝炭疽。
我只是在不編寫完整程序的情況下介紹如何執行此操作。 簡短的答案是,這是非常可能的,並且相對簡單。
步驟1 :從相機獲取圖像
為此,我建議您僅使用VideoCapture
並處理每個VideoCapture
圖像。可以這樣進行:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read() # Read the current frame
第2步 :檢測顏色(我將舉例說明紅色)
為此,您將需要在RGB顏色空間中定義一些邊界。 為此,您實際上只需要確定一些上下邊界
boundaries = [
([17, 15, 100], [50, 56, 200]),
([25, 146, 190], [62, 174, 250])
]
這是兩個邊界的上下邊界。 例如([17, 15, 100], [50, 56, 200])
表示我們正在尋找R>=17
, B>=15
, G>=100
和R<=50
, B<=56
, G<=200
。 是的,由於OpenCV中的默認方案,因此格式為RBG
步驟3 :放在一起
while True:
ret, frame = cap.read() # Read the current frame
for (lo, up) in boundaries:
lo = np.array(lo, dtype='uint8')
up = np.array(up, dtype='uint8')
# Find the colors within those boundaries in the image
mask = cv2.inRange(frame, lo, up)
out = cv2.bitwise_and(frame, frame, mask=mask)
現在, out
包含當前幀,但僅包含那些邊界內圖像中的red
。 然后,您可以確定圖像中是否有足夠的紅色可跟隨,或者轉動或轉動什么。 如果要實際確定它是否是某種類型的線,則還可以使用findContours
來確定紅色對象的形狀,然后找出它是否是這種線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.