Professional Documents
Culture Documents
SEYH
BILEC
IK
EDEBALI NIVERS
ITES
I
IK
FAKLTESI
MHENDISL
I BLM
ISAYAR
IG
BILG
MHENDISL
I KULLANILARAK OPEN CV
RASPBERRY PI PYTHON DIL
SISTEM
KTPHANESIYLE
RENK VE MESAFE TAKIP
I
Ayse CAL
IRME
BIT
ALISMASI
DANISMANI
BILEC
IK
12 Ocak 2017
T.C.
SEYH
BILEC
IK
EDEBALI NIVERS
ITES
I
IK
FAKLTESI
MHENDISL
I BLM
ISAYAR
IG
BILG
MHENDISL
I KULLANILARAK OPEN CV
RASPBERRY PI PYTHON DIL
SISTEM
KTPHANESIYLE
RENK VE MESAFE TAKIP
I
Ayse CAL
IRME
BIT
ALISMASI
DANISMANI
BILEC
IK
12 Ocak 2017
IR
IM
BILD
Bu kitaptaki btn bilgilerin etik davrans ve akademik kurallar erevesinde elde edildigini ve yazm kurallarna uygun olarak hazrlanan bu alsmada bana ait olmayan her
trl ifade ve bilginin kaynagna eksiksiz atf yapldgn bildiririm.
DECLARATION
I hereby declare that all information in this document has been obtained and presented
in accordance with academic rules and ethical conduct. I also declare that, as required by
these rules and conduct, I have fully cited and referenced all materials and results that are
not original to this work.
Imza
Ayse CAL
Tarih:17.03.2017
ii
ZET
IRME
BIT
ALISMASI
I KULLANILARAK OPEN CV
RASPBERRY PI PYTHON DIL
SISTEM
KTPHANESIYLE
RENK VE MESAFE TAKIP
I
Ayse CAL
Bilecik Seyh
Edebali niversitesi
Mhendislik Fakltesi
Bilgisayar Mhendisligi Blm
Dansman: Do. Dr. Metin KESLER
2017, 43 Sayfa
Jri yeleri
Imza
.....................................
.....................
.....................................
.....................
.....................................
.....................
Proje alsmamda Python dilini kullanarak Open CV ktphanesiyle grnt isleme zerine alstm.Bunlar hem Raspberry Pi zerinde hemde Windows tabanl sistem gelistirerek yaptm.Raspberry
Pinin GPIO pinlerini kullanarak grnty alglayp led yakmasn ve Ultrasonik sensr yardmyla mesafe lmesini sagladm.Windowsda GPIO paketlerini kullanamayacagm iin sanki
GPIO paketleri varms gibi alglamasn sagladm.Ultrasonik sensr iinde aysn gereklertirdim.
iii
ABSTRACT
THESIS
COLOR AND DISTANCE TRACKING SYSTEM WITH RASPBERRY PI
PYTHON LIBRARY OPENED CV LIBRARY
Ayse CAL
Bilecik Seyh
Edebali University
Engineering Faculty
Department of Computer Engineering
Advisor: Do. Dr. Metin KESLER
2017, 43 Pages
Jury
Sign
.....................................
.....................
.....................................
.....................
.....................................
.....................
I worked on image processing with Open CV library using Python language. I did this by
developing Windows based system both on Raspberry Pi. I enabled Raspberry Pi to detect the
image using GPIO pins and measure the distance with the help of ultrasonic sensor. I can not use
GPIO packages on Windows I realized that GPIO packages existed as if I had done it. I realized
the light inside the ultrasonic sensor.
iv
NSZ
Bitirme alsmamn basndan sonuna kadar emegi geen ve beni bu konuya ynlendiren sayg deger hocam ve dansmanm Sayn Metin KESLER sayn Murat ZALPe ve
alsmalarmda yardmc olan Mr.Adrian Rosebrocke tm katklarndan ve hi eksiltmedigi desteginden dolay tesekkr ederim.
Ayse CAL
12 Ocak 2017
INDEK
I
ILER
NSZ
SEK
ILLER
TABLOSU
viii
IS
1 GIR
1.1
I
2 PYTHON PROGRAMLAMA DIL
2.1
Python Nedir ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 OPEN CV
3.1
4
6
OpenCV Bilesenleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 RASPBERRY PI
7
9
4.1
Raspberry Pi 1 Hakknda . . . . . . . . . . . . . . . . . . . . . . . . . .
10
4.2
12
SENSRLER
5 ULTRASONIK
17
6 TEMEL VIDEO
ISLEMLER
18
6.1
18
6.2
Cisimlerin Seklini
19
6.3
Renk Takibi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
6.4
20
6.5
21
6.6
22
6.7
22
7 EKLER
24
7.1
Ek-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
7.2
Ek-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
7.3
Ek-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
7.4
Ek-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
vi
KAYNAKLAR
33
ZGEMIS
34
vii
SEK
ILLER
TABLOSU
Sekil
1.1
Grnt Isleme . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sekil
2.1
Python Dili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sekil
3.1
Open CV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sekil
3.2
OPen CV Srmleri
. . . . . . . . . . . . . . . . . . . . . . . . .
Sekil
4.2
Raspberry Pi
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
Sekil
4.1
Raspberry Pi B . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Sekil
4.2
. . . . . . . . . . . . . . . . . .
12
Sekil
4.3
. . . . . . . . . . . . . . . . . . . . . . . .
13
Sekil
4.4
15
Sekil
4.5
16
Sekil
5.1
. . . . . . . . . . . . . . .
17
Sekil
6.1
19
Sekil
6.2
Sekil
Tespiti
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
Sekil
6.3
20
Sekil
6.4
21
Sekil
6.5
. . . . . . . . . . . . . . . . . . . .
21
Sekil
6.6
. . . . . . . . . . . . . . . . . . . . . .
22
Sekil
6.6
23
. . . . . . . . . . . . . . . . . . . . . . .
viii
IS
GIR
Grnt isleme isim (Almanca Bildbearbeitung) llms veya kaydedilmis olan elektronik (dijital) grnt verilerini, elektronik ortamda (bilgisayar ve yazlmlar yardm ile)
amaca uygun sekilde degistirmeye ynelik yaplan bilgisayar alsmas. Grnt isleme,
verilerin, yakalanp lme ve degerlendirme isleminden sonra, baska bir aygtta okunabilir bir biime dnstrlmesi ya da bir elektronik ortamdan baska bir elektronik ortama
aktarmasna ynelik bir alsma olan "Sinyal islemeden" farkl bir islemdir. Grnt isleme, daha ok, kaydedilmis olan, mevcut grntleri islemek, yani mevcut resim ve grafikleri, degistirmek, yabanclastrmak ya da iyilestirmek iin kullanlr. Daha ok fotograflk ve grafik-Tasarm alanlarnda kullanlr.
1.1
Grnt I
Baz Terim ve Tanmlar
Resim Filtresi : ekim srasnda kullanlmayan fotograf filtreleri ile elde edilen grnt zenginligini, ekimden sonra kullanma imkn sunan sanal bilgisayar aralardr.
Dnstrme : Bir dosya biimini, baska bir dosya biimine dnstrmek iin kullanlan yazlmlara, dnstrme yazlm denir. Bu sayede, belli bir program ile yaplms
olan bir belge, baska bir bilgisayar program ile alp kullanlabilir. Bir belgenin farkl
bir yazlm kullanlarak alabilmesi, ancak bu sekilde mmkndr.
Makro : Kaydedilmis bilgisayar komutlar dizisine makro denir. Makro sayesinde, bes admda yaplabilen islemler, tek bir komuta indirgenmis olur. ve ayn islem tekrar yaplmak istendiginde, bu islemi yapmak iin, kaydedilmis olan makro kullanlr. bu sayede,
birok admda yaplabilen bir islem, tek bir komutla (makro ile) yaplms olur.
leklendirme : Resim ve grafikler, orantl ya da orantsz olarak byltp kltlebilir buna leklendirme denir.
1
Dndrme : Resim ve grafikler, yatay ve dikey olarak ya da kullancnn istek ve ihtiyacna bagl olarak, kendi ekseni etrafnda, belli bir a dahilinde evirilebilir. Buna dndrme denir.
rtleme : Baz blmleri, alsmann dsnda tutmak iin, Resimin baz blmleri
kapatlabilir. Bu isleme rtme ya da maskeleme denir. rtler (Maskeler) resmin verilen
komuttan etkilenmemsini veya baz resim blmlerinin gizlenmesini saglar.
Yanstma : Resimler, yatay ve dikey olarak, aynadaki grntye benzer sekilde ters
evrilebilir. Buna yanstma denir.
Devirme : Perspektif hatalarn resimlerin ileri geri dzeltilmesi ile elde edilir. buna
devirme denir.
saretleme : Resmin belli bir blmnn islem iin hedef gsterilmesine isaretleme
I
denir. Verilen komut sadece isaretli olan blm etkiler.
Sihirli degnek : Resim zerindeki en kk resim elemanna Piksel denir. Sihirli degnek, resim elemanlarn semeye yarayan bir isaretleme aracdr.
Fra : Resim izmek iin kullanlan sanal araca fra denir. Fra, grnt isleme yazlmlarnda, standart aralardan biri olmustur. Ucu ve kalnlg istek ve ihtiyaca bagl
olarak, kullanc tarafndan degistirilebilir. Baz programlarda, dolgu deseni ile izim yapmaya da imkn verir.
2
Sekil
I
PYTHON PROGRAMLAMA DIL
2.1
Python Nedir ?
Python, nesne ynelimli, yorumlamal, birimsel (modler) ve etkilesimli yksek seviyeli bir programlama dilidir.
Modler yaps, snf dizgesini (sistem) ve her trl veri alan girisini destekler. Hemen
hemen her trl platformda alsabilir. (Unix , Linux, Mac, Windows, Amiga, Symbian).
Python ile sistem programlama, kullanc arabirimi programlama, ag programlama, uygulama ve veritaban yazlm programlama gibi birok alanda yazlm gelistirebilirsiniz.
Byk yazlmlarn hzl bir sekilde prototiplerinin retilmesi ve denenmesi gerektigi durumlarda da C ya da C++ gibi dillere tercih edilir.
Python, Guido Van Rossum adl Hollandal bir programc tarafndan yazlms bir programlama dilidir. Gelistirilmesine 1990 ylnda baslanan Python; C ve C++ gibi programlama dillerine kyasla;
daha kolay grenilir,
program gelistirme srecini ksaltr,
bu programlama dillerinin aksine ayr bir derleyici programa ihtiya duymaz,
hem daha okunakldr, hem de daha temiz bir szdizimine sahiptir.
4
Pythonun bu ve buna benzer zellikleri sayesinde dnya apnda n sahibi byk kuruluslar (Google, Yahoo! ve Dropbox gibi) bnyelerinde her zaman Python programclarna ihtiya duyuyor. Mesela pek ok byk sirketin Python bilen programclara is olanag
sundugunu, Pythonun bas gelistiricisi Guido Van Rossumun 2005 ile 2012 yllar arasnda Googleda alstgn, 2012 ylnn sonlarna dogru ise Dropbox sirketine getigini
sylersek, bu programlama dilinin nemi ve geerliligi herhalde daha belirgin bir sekilde
ortaya kacaktr.
Bu arada, her ne kadar Python programlama dili ile ilgili ogu grsel malzemenin
zerinde bir ylan resmi grsek de, Python kelimesi aslnda ogu kisinin zannettigi gibi
piton ylan anlamna gelmiyor. Python Programlama Dili, ismini Guido Van Rossumun
ok sevdigi, Monty Python adl alt kisilik bir Ingiliz komedi grubunun Monty Pythons
Flying Circus adl gsterisinden alyor.
Sekil
OPEN CV
OpenCV (Open Source Computer Vision) ak kaynak kodlu grnt isleme ktpha-
nesidir. 1999 ylnda Intel tarafndan gelistirilmeye baslanms daha sonra Itseez, Willow,
Nvidia, AMD, Google gibi sirket ve topluluklarn destegi ile gelisim sreci devam etmektedir. Ilk srm olan OpenCV alfa 2000 ylnda piyasaya kmstr. Ilk etapta C programlama dili ile gelistirilmeye baslanms ve daha sonra birok algoritmas C++ dili ile
gelistirilmistir. Open source yani ak kaynak kodlu bir ktphanedir ve BSD lisans ile
altnda gelistirilmektedir.
BSD lisansna sahip olmas bu ktphaneyi istediginiz projede cretsiz olarak kullanabileceginiz anlamna gelmektedir. OpenCV platform bagmsz bir ktphanedir, bu
sayede Windows, Linux, FreeBSD, Android, Mac OS ve iOS platformlarnda alsabilmektedir. C++, C, Python, Java, Matlab, EmguCV ktphanesi araclgyla da Visual
Basic.Net, ve Visual C++ dilleri ile topluluklar tarafndan gelistirilen farkl wrapperlar
araclgyla Perl ve Ruby programlama dilleri ile kolaylkla OpenCV uygulamalar gelistirilebilir.
Sekil
3.1: Open CV
2016-05-27 tarihli gncelleme, OpenCV gelistirici Itseez firmas Intel tarafndan satn
alnd. OpenCV gelistirmesine Intel ats altndan devam edecegini duyurdu.
OpenCV ktphanesi ierisinde grnt islemeye (image processing) ve makine grenmesine (machine learning) ynelik 2500den fazla algoritma bulunmaktadr. Bu algoritmalar ile yz tanma, nesneleri ayrt etme, insan hareketlerini tespit edebilme, nesne
6
snflandrma, plaka tanma, boyutlu grnt zerinde islem yapabilme, grnt karslastrma, optik karakter tanmlama OCR (Optical Character Recognition) gibi islemler
rahatlkla yaplabilmektedir.
Sekil
3.1
OpenCV Bilesenleri
Core : OpenCVnin temel fonksiyonlar ve matris, point, size gibi veri yaplarn bulundurur. Ayrca grnt zerine izim yapabilmek iin kullanlabilecek metotlar ve
XML islemleri iin gerekli bilesenleri barndrr.
Imgproc : Filtreleme operatrleri, kenar bulma, nesne belirleme, renk uzay ynetimi,
renk ynetimi ve esikleme gibi neredeyse tm fonksiyonlar iine alan bir pakettir. 3 ve
sonra srmlerde baz fonksiyonlar degismis olsada 2 ve 3 srmnde de bir ok fonksiyon ayndr.
7
Videoio : Kameralara ve video cihazlarna erismek ve grnt almak ve grnt yazmak iin gerekli metotlar barndrr. OpenCV 3 srm ncesinde bu paketteki birok
metot video paketi ierisindeydi.
RASPBERRY PI
Raspberry Pi Birlesik Krallkta Raspberry Pi Vakf tarafndan okullarda bilgisayar bi-
limini gretmek amaclgyla gelistirilmis kredi kart byklgnde tek kartl bir bilgisayardr. Fiyat modeline gre degisiklik gsterir ve 5ile35 arasndadr. Raspberry Pi 2
modeli Subat
2015te kmstr.Sonraki model Raspberry Pi Zero, Kasm 2015te kmstr. Son model olan Raspberry Pi 3 ise Subat
2016da kmstr.
Raspberry Pi bilgisayar Element Premier Farnell, RS Components ve Egoman firmalar tarafndan imal edilmektedir. Bu firmalar Raspberry Pi bilgisayarn Internet zerinde
satmaktadrlar. Egoman, in ve Tayvanda satlan bir srmn satmaktadr ve rengi krmz olup FCC/CE etiketlerini tasmaz, bunun dsnda digerlerinden hibir fark bulunmamaktadr.
Raspberry Pi, ilk modellerinde ARM1176JZF-S 700 MHz merkezi islem birimini ieren Broadcom BCM2835 mikroipi zerine kurulmustur. Daha sonra piyasaya kan Raspberry Pi 2 modelinde Broadcom BCM2836 kullanmstr. VideoCore IV GPU grafik islem
birimine sahiptir. Booting ve veri depolamas iin SD kart kullanr. zerinde USB 2.0
portlar, HDMI video ks, ses ks, MIPI kamera girisi, GPIO arayz ve 5V MicroUSB g girisi bulunmaktadr.
Vakfn web sitesinden Raspbian (Debian Wheezy tabanl), Pidora (Fedora tabanl),
Snappy Ubuntu Core veya desteklenen diger isletim sistemleri indirilebilir. Sitesi dsndaki Pardus ARM, Arch Linux ARM ve Windows 10 IoT Core isletim sistemlerini de
destekler. Python programlama dili ile programlanabildigi gibi BBC Basic, C ve Perl
programlama dilleri de kullanlabilmektedir.
Sekil
4.2: Raspberry Pi
4.1
Raspberry Pi 1 Hakknda
Sekil
4.1: Raspberry Pi B
Daha iyi ses kslar: Analog ses kslar dip grltsnden etkilenmekte, ve de
kirli sese neden olabilmekteydi. Devrede yaplan degisiklik ile bu sorun giderildi.
Daha derli bir board/devre dzeni: USB baglantlar boardn kenarlarna hizaland, kompozit video 3.5mm jack ile beraber oldu, ve de dikdrtgen seklinde 4 tane
baglant deligi ayarland.
11
Sekil
4.2
1. Adm : Raspberry Pi Rasbian Kurulumu : Internet zerinden Rasbian isletim sistemi indirilerek SD Carda imaj atlarak yklenir.
2.Adm: Isletim sistemi kurulduktan sonra Pi gncellenir ve Python kurulumu yaplr.
3. Adm : Numpy ktphanesi kurulur.
12
Sekil
Puttyden terminal aldgnda, ykl paketleri gncelleyip ykselttikten sonra Raspberry Piyi gncellenerek baslayacagz.
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-update
Gerekli gelistirici aralarn ve paketlerini ykleyin.
$ sudo apt-get install build-essential cmake pkg-config
Gerekli grnt G / paketlerini kurun. Bu paketler, JPEG, PNG, TIFF, vb. Gibi
esitli resim dosyas formatlarn yklemenize izin verir.
$ sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
GTK gelistirme kitaplgn ykleyin. Bu ktphane, Grafik Kullanc Arayzlerini
(GUIler) olusturmak iin kullanlr ve OpenCVnin highgui ktphanesi iin ekrannzdaki grntleri grmenizi saglar.
13
Sekil
$ make
Son olarak, OpenCVyi kurabiliriz.
$ sudo make install
$ sudo ldconfig
Ancak, Open VirtualCVyi cv sanal ortammzda kullanmak iin ncelikle OpenCVyi
site-packages dizinimize sembolik olarak baglamamz gerekir.
$ cd /.virtualenvs/cv/lib/python2.7/site-packages/ $ ln -s /usr/local/lib/python2.7/sitepackages/cv2.so cv2.so $ ln -s /usr/local/lib/python2.7/site-packages/cv.py cv.py
Sonunda OpenCV ve Python kurulumlarmza bir test srs yapabiliriz.
$ workon cv
$ python
import cv2
cv2.__version__
Sekil
16
SENSRLER
ULTRASONIK
Ultrasonik ses dalgalar 20 kHz ile 500 kHz arasnda frekanslara sahip ses dalgalar-
Sekil
Ultrasonik sensrlerin alglama menzili uygun kosullarda 30 metreye varabilir. Ultrasonik sensrlerde iki adet transducer bulunur. Bunlardan biri ultrasonik speaker digeri
de ultrasonik mikrofondur. Elektronik devre ile ultrasonik speakerdan ses dalgasnn yaylma an ile bu ses dalgasnn engele arpp yansyarak ultrasonik mikrofon tarafndan
alglanmas arasndaki zaman llr ve bu zamann ikiye blnp ses hz ile arplmas sonucunda da engel ile ultrasonik sensr arasndaki mesafe hesaplanr. Robotlarda
genellikle 40 kHzlik ultrasonik sensrler kullanlmaktadr.
17
TEMEL VIDEO
ISLEMLER
6.1
Kameradan alnan iki video karesi ierisinde kamera hareket vektrn bulmamz gerekiyor. Burda OpenCV fonksiyonlarndan GoodFeaturesToTrack fonksiyonu kullanlarak birinci video karesinde ki kse noktalar tespit ediliyor. Burda sz geen bir video
karesinde bilgisayar ekrannn kseleri masann kseleri gibi kavramlardr. Edgeler degildir.
Canny kenar dedektr, John F. Canny tarafndan 1986 ylnda gelistirilmistir. Ve hala
yaygn olarak bugn grnt isleme de varsaylan kenar dedektrleri olarak kullanlr.
Sekil
6.2
Cisimlerin Seklini
Cisimlerin seklini belirlerken kullanlanan resimde ki gen, kare, dikdrtgen gibi nesnelerin varlklarn belirledik.Daha sonra bunlarn zerine ne olduklarn yazdrdk.
Sekil
6.2: Sekil
tespiti
19
6.3
Renk Takibi
Belirlenen cisimlerin takip edilmesi iin HSV renk uzayndan renk kodlarn bularak
cisimlerin renginin alglanp takip edilmesini sagladk.
Ilk rnekte sadece sar rengin tespiti yaplmstr.Diger renklerinde HSV renk uzayndan
renk kodlar bulunarak yaplmas saglanmstr.
Sekil
6.4
Rengi belirledikten sonra kullanlacak pinleri ayarladk. Daha sonra kameredan cismi
alglayarak rengini tespit ettik ve led yakmn sagladk.
20
Sekil
6.5
Sekil
6.6
Windowsda Python, Open CV programlarn indirip komut ekrannda gerekli programlar kurduktan sonra Raspberry Piye ihtaya duymadan sekilleri belirleyip grnt
isleme yaplabilir ve kamera modlleri daha hzl alstrlr.
Sekil
6.7
Python ierisine klasr olusturularak GPIO ktphanesi kullanlabilir hale getirilir yani
bir nevi Windows GPIO paketi varsayp islemi yazlmsal olarak hata vermeden gereklestirir.
22
Sekil
23
EKLER
7.1
Ek-1
Kenarlar Bulma
import numpy as np
import sys
sys.path.append(/usr/local/lib/python2.7/site-packages)
import cv2
cap = cv2.VideoCapture(0)
while(1):
_, frame = cap.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
lower = np.array([30,150,50])
upper = np.array([255,255,180])
mask = cv2.inRange(hsv, lower, upper)
res = cv2.bitwise_and(frame,frame, mask= mask)
kenar = cv2.Canny(frame,100,200)
cv2.imshow(Kenarlari,kenar)
if cv2.waitKey(1) & 0xFF == ord(q):
break
cv2.destroyAllWindows()
cap.release()
24
7.2
Ek-2
Cisim Alglama
import cv2
class ShapeDetector:
def __init__(self):
pass
def detect(self,c):
shape = "Kimligi Belirsiz"
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.04 * peri, True)
if len(approx) == 3:
shape = "Ucgen"
elif len(approx) == 4:
(x,y,w,h) = cv2.boundingRect(approx)
ar = w / float(h)
shape = "Kare" if ar >= 0.95 and ar <= 1.05 else "Dikdortgen"
elif len(approx) == 5:
shape = "Besgen"
else:
shape = "Daire"
return shape
import cv2
ap = argparse.ArgumentParser()
ap.add_argument("-i", "image", required=True, help="path to the input image")
args = vars(ap.parse_args())
image = cv2.imread(args["image"])
resized = imutils.resize(image, width=300)
ratio = image.shape[0] / float(resized.shape[0])
gray = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
thresh = cv2.threshold(blurred, 60, 255, cv2.THRESH_BINARY)[1]
M = cv2.moments(c)
7.3
Ek-3
import imutils
import cv2
import RPi.GPIO as GPIO
import time
#kaytlar ayristirma islemi yaplr.
GPIO.setwarnings(False)
ap = argparse.ArgumentParser()
ap.add_argument("-v", "video", help="path to the (optional) video file")
ap.add_argument("-b", "buffer", type=int, default=32, help="max buffer size")
args = vars(ap.parse_args())
cv2.VideoCapture()
27
# Renk alan
cnts = cv2.findContours(mask.copy(),
cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
center = None
255), 2)
cv2.circle(frame, center, 5, (0, 0, 255), -1)
pts.appendleft(center)
for i in xrange(1, len(pts)):
if pts[i - 1] is None or pts[i] is None:
continue
thickness = int(np.sqrt(args["buffer"] / float(i + 1)) * 2.5)
cv2.line(frame, pts[i - 1], pts[i], (0, 0, 255), thickness)
cv2.imshow("Frame", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
camera.release()
cv2.destroyAllWindows()
29
7.4
Ek-4
# Web kamerasna
if not args.get("video", True):
camera = cv2.VideoCapture(0)
cv2.CHAIN_APPROX_SIMPLE)[-2]
center = None
def BlinkSari(numTimes, speed):
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
# Sarirenk iin
for i in range(0, numTimes):
31
GPIO.output(23, True)
print Sari
time.sleep(speed)
GPIO.output(23, False)
time.sleep(speed)
GPIO.cleanup()
# Yalnzca kontur bulunursa devam edin
if len(cnts) > 0:
BlinkSari(1, 1)
c = max(cnts, key=cv2.contourArea)
((x, y), radius) = cv2.minEnclosingCircle(c)
M = cv2.moments(c)
center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))
# Yalnzca yarap minimum bir boyutla kararsa devam edin
if radius > 10:
# ereve zerinde daire ve centroid izin,
# Sonra izlenen puanlarn listesini gncelleyin
cv2.circle(frame, (int(x), int(y)), int(radius), (0, 255, 255), 2)
cv2.circle(frame, center, 5, (0, 0, 255), -1)
pts.appendleft(center)
for i in xrange(1, len(pts)):
if pts[i - 1] is None or pts[i] is None:
continue
thickness = int(np.sqrt(args["buffer"] / float(i + 1)) * 2.5)
cv2.line(frame, pts[i - 1], pts[i], (0, 0, 255), thickness)
cv2.imshow("Frame", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
camera.release()
cv2.destroyAllWindows()
32
KAYNAKLAR
[1] https://pythonprogramming.net/canny-edge-detection-gradients-pyt
[2] http://www.pyimagesearch.com/2016/05/02/
accessing-rpi-gpio-and-gpio-zero-with-opencv-python/
[3] http://www.pyimagesearch.com/2015/09/14/
ball-tracking-with-opencv/
[4] http://raspberrypi.stackexchange.com/questions/34119/
gpio-library-on-windows-while-developing
[5] http://www.pyimagesearch.com/2015/02/23/
install-opencv-and-python-on-your-raspberry-pi-2-and-b/
[6] http://www.thirdeyevis.com/pi-page-2.php
[7] https://community.dur.ac.uk/m.j.r.bordewich/rpi/
BrickPiRobot.html
[8] https://github.com/MagnusBordewich/ObjectTracking/blob/
master/RaspberryPi/1-capture_image.py
33