Bugünkü uygulamamızda Raspberry Pi ile OpenCV modülünü kullanarak renkli cisim tespiti uygulaması yapacağız. Bu uygulama “Arduino ve Raspberry Pi ile Renkli Top Takibi” projemizin temelini oluşturacak.

Öncelikle malzemelerimize göz atalım.

Malzeme Listesi

Renkli Cisim Tespiti Proje Basamakları

Öncelikle projemizde OpenCV kullanacağımız için gerekli olan bazı modülleri indirmekle başlayalım.

Modüllerin Kurulumu

Aşağıdaki kodları terminal ekranında satır satır çalıştırarak “OpenCV” ve “imutils” modüllerini yükleyelim. “imutils” modülü önizleme aşamasında işlerimizi oldukça kolaylaştıracak.

sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-103
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev


pip install opencv-python==4.1.0.25
pip install imutils

Renkli Cisim Tespiti Proje Kodları

import cv2
import imutils
import time
from imutils.video import VideoStream
red_low = (161, 155, 84) #kırmızı rengin max ve min HSV kodları
red_high = (179, 255, 255)
xc=0 #cismin : x-merkez ve y-merkez
yc=0
vs = VideoStream(usePiCamera=True).start() #pi kamerayı başlattık
time.sleep(2)
while True:
frame = vs.read() #kameradan okuma yapıyoruz
frame = imutils.resize(frame, width=400) #önizleme ekranı oluşturduk
if frame is None:
break
blurred = cv2.GaussianBlur(frame, (11, 11), 0) #görüntüyü sadeleştirmek için blur koyduk
w, h = frame.shape[:2]
hsv = cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV) #görüntüyü HSV cinsine çevirdik
mask = cv2.inRange(hsv, red_low, red_high) #HSV cinsinden tüm piksellerin renklerini kontrol ediyoruz
mask = cv2.erode(mask, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
center = None
if len(cnts) > 0:
c = max(cnts, key=cv2.contourArea)
((x, y), radius) = cv2.minEnclosingCircle(c)
M = cv2.moments(c)
xc=int(M["m10"] / M["m00"])
yc=int(M["m01"] / M["m00"])
center = (xc,yc)
if radius > 10: #eğer kırmızı renk tespit edildiyse
cv2.rectangle(frame,(int(xradius),int(yradius)) , (int(x+radius),int(y+radius)), (0, 255, 255), 3)
#cisme sarı çerçeve çizdik.
cv2.circle(frame, center, 5, (0, 0, 255), 1) #cismin merkezine kırmızı nokta koyduk
print(xc,yc)
cv2.imshow("Frame", frame) #kapatmak için q tuşuna basın
if cv2.waitKey(1) & 0xFF == ord('q'):
break
vs.release()
cv2.destroyAllWindows()
view raw Renk_tespit.py hosted with ❤ by GitHub

HSV Renk Uzayı Nedir ve Niçin Kullanıyoruz?

HSV renk uzayı, 1970′ lerde RGB renk uzayına alternatif olarak için geliştirilmiştir. Özellikle görüntü tanıma uygulamalarında RGB’ den daha iyi sonuçlar alınmaktadır.

HSV, Hue, Saturation ve Value kelimelerinin baş harflerini ifade eder.

HSV; şekilde gibi bir silindir şeklinde ifade edilir. Piksel değeri x için, H değeri x’ in açısal konumunu ifade eder, S değeri x’ in silindirin merkezine uzaklığını, V değeri ise x’ in silindir yüzeyine uzaklığını ifade eder.

OpenCV için bazı renklerin HSV kodları aşağıdaki gibidir:

Renk Alt Limit Üst Limit
Mor (130, 100, 100) (160, 255, 255)
Sarı (22, 100, 100) (38, 255, 255)
Yeşil (38, 100, 100) (75, 255, 255)
Mavi (75, 100, 100) (130, 255, 255)
Turuncu (0, 100, 100) (22, 255, 255)
Kırmızı (160, 100, 100) (179, 255, 255)

Bu projemizde örnek olarak kırmızı rengi kullandık. Siz yukarıdaki tabloya göre değerleri değiştirerek farklı renkteki cisimleri tespit edebilirsiniz.

Raspberry Pi – Pi Kamera ve OpenCV ile Renkli Cisim Tespiti ” projemizin sonuna geldik. Bu proje hakkında herhangi bir sorunuz olursa bu gönderiye yorum olarak yazabilir veya mail adresimden bana ulaşabilirsiniz.

🚀 Raspberry Pi – OpenCV ile Yüz Tespit Sistemi yazımızı okumanızı tavsiye ederiz.

İyi çalışmalar dilerim…

#ProjeBaşlasın

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz