Birde cnr sana notum abi ne eğitim hayatım boyunca nede iş hayatımda o kadar python kodu yazdım bir kere bile byle düzenli kurallara uyarak değişken atamadım commend yazmadım. Grünce insan zeniyor. Tembelim ne yapim. abi her şeyi de biliyorsun. idolümsün :)

Python ile OpenCV kütüphanesini kullanarak renk takibi yapabileceğiniz bi kod rneği, ilgilenenlerin işine yarayabilir. "cv2. pyd" kullanarak yapmıştım, numpy ve opencv gerekir, bağımlılıkları ona gre halledersiniz sanırım. #!/usr/bin/env python# Gerekli olan modulleri cagirilmasi. import osimport cv2import cv2. cv as cvfrom numpy import interpimport sysimport time# Programin calistigi dosya yolunun gosterilmesipath = os. getcwd colorfile = os. path. join # Eger dosya yolunda colors. txt diye bi dosya yoksa, yeni bir color. txt dosyasi olusturup icine varsayilan degerlerin atilmasitry: colors = open line = colors. readline red, green, blue, redm, greenm, bluem = except: red = green = blue = 0 redm = greenm = bluem = 200#min = (30, 150, 30)#max = (100, 255, 255)# Hisbirsey yapmayan fonksiyon def nothing : pass# Programin pencerelerinin masauzerine getirilmesidef create_window : # Renk Ayar penceresinin renk degerlerinin ayarlanmasi icin ayrica olusturulmasi cv2. namedWindow cv2. createTrackbar('RED MIN', 'Renk Ayar', 0, 255, nothing) cv2. createTrackbar('GREEN MIN', 'Renk Ayar', 0, 255, nothing) cv2. createTrackbar('BLUE MIN', 'Renk Ayar', 0, 255, nothing) cv2. createTrackbar('RED MAX', 'Renk Ayar', 0, 255, nothing) cv2. createTrackbar('GREEN MAX', 'Renk Ayar', 0, 255, nothing) cv2. createTrackbar('BLUE MAX', 'Renk Ayar', 0, 255, nothing) cv2. setTrackbarPos cv2. setTrackbarPos cv2. setTrackbarPos cv2. setTrackbarPos cv2. setTrackbarPos cv2. setTrackbarPos cv2. resizeWindow('Renk Ayar', 500,300) # Renk Takip penceresinin olusturulmasi cv2. namedWindow # Nesneyi bulan fonksiyondef detect_object : # IMAGE olarak gelen frame'in HSV moduna cevirilmesi hsv_img = cv. CreateImage(cv. GetSize ,8,3) cv. CvtColor(image, hsv_img, cv. CV_BGR2HSV) # HSV moduna cevrilmis olan frame'in THRESHOLD alinacak sekilde siyah beyaz hale dondurulmesi thrs_img=cv. CreateImage(cv. GetSize ,8,1) # HSV modunda olan frame'in ayarlanan renk degerleri arasinda olanlarinin siyah beyaz yapilmis frame'in uzerine yazilmasi cv. InRangeS(hsv_img, , , thrs_img) # 3. derecen polygonlarin moments hesaplayip donulmesi moments = cv. Moments(cv. GetMat(thrs_img, 0), 0) area = cv. GetCentralMoment(moments, 0, 0) # Eger hesaplanan yogunluk alani belirledigimiz degerden buyukse if(area > 100000): # Moments'in orta noktasinin X ve Y baslangic noktalarina olan uzakliklarinin hesaplanmasi x = cv. GetSpatialMoment(moments, 1, 0)/area y = cv. GetSpatialMoment(moments, 0, 1)/area # Yeni bir renkli frame yaratilmasi overlay = cv. CreateImage(cv. GetSize , 8, 3) # Taninan nesne etrafina ve koselerine cizgi cizilmesi #cv. Circle(overlay, (int , int , 2, (255, 255, 255), 20) cv. Line(image, (int +100, int +100), (int +90, int +100), (255,255,255), 2) cv. Line(image, (int +100, int +100), (int +100, int +90), (255,255,255), 2) cv. Line(image, (int -100, int +100), (int -90, int +100), (255,255,255), 2) cv. Line(image, (int -100, int +100), (int -100, int +90), (255,255,255), 2) cv. Line(image, (int -100, int -100), (int -90, int -100), (255,255,255), 2) cv. Line(image, (int -100, int -100), (int -100, int -90), (255,255,255), 2) cv. Line(image, (int +100, int -100), (int +90, int -100), (255,255,255), 2) cv. Line(image, (int +100, int -100), (int +100, int -90), (255,255,255), 2) # Ilk frame ile renklerin secildigi frame'in birlestirilmesi cv. Add cv. Merge # Servo kontrolu icin gerekli olan pozisyon degerinin donulmesi return x if name " main ": # Pencerenin olusturulmasi ve Kamera'dan frame alinmasina baslanilmasi create_window capture = cv. CaptureFromCAM(0) # Sonsuz dongu while True: # Kameradan her dongude bir frame alinip image degiskenine yazilmasi image = cv. QueryFrame # Renk Ayar penceresinde ayarlanan renklerin degerlerinin alinip degiskenlere eslestirilmesi red = cv2. getTrackbarPos green = cv2. getTrackbarPos blue = cv2. getTrackbarPos redm = cv2. getTrackbarPos greenm = cv2. getTrackbarPos bluem = cv2. getTrackbarPos # Nesnenin tanimlanacagi fonksiyona kameradan alinan frame'in gonderilmesi x = detect_object # Eger pozisyon varsa, servo icin gerekli islemlerin ve hesaplamalarin yapilmasi if x: w, h = cv. GetSize pos = int(interp(x, , )) try: sys. stdout. flush except: pass # Tum pencelerin ekranda gosterilmesi ve kapatmak icin ESC tusuna basilip basilmadiginin surekli kontrolu cv. ShowImage ch = cv2. waitKey(5) if ch 27: break cv2. destroyAllWindows #Renklerin ayar dosyasina yazilmasi colors = open line = line = ",". join( ) colors. write colors. close olur da nasıl çalışıyor diye merak edenler için, windows'a derlenmiş halini de koyayım :) http://depositfiles.com/files/n95bz6w6p Bizim olduğumuz her yerde herşey bizim yüzümüzden olmuştur. Ben benim amk bana bişey olmasın!

Hemen yüksek lisans tezim olduğu için atlayım :) ncelikle 2.3 kullanmanızı neririm 2.4'de apiyi baya değiştirdiler. Ek olarak aşagıda ki rnekte hsv moduna cevrilirken InRange'de 2 farklı trashold değerine gre işleyip or'larsa daha iyi sonuç alır. ;) Son olarak python ve opencv ile ilgilenen arkadaşlar benim gibi tembelseniz simpleCV neririm opencv'nin python frameworkü seksidir. Mühendis kahveyi projeye dnüştüren bir insan evladıdır.

derindelimavi. blogspot.com da grmüştüm openCVyi ilk , çok merak etmiştim de şyle bi merhaba demeye bile uğraşmamıştım. Güzelmiş, konu güzel =) :)

Birde cnr sana notum abi ne eğitim hayatım boyunca nede iş hayatımda o kadar python kodu yazdım bir kere bile byle düzenli kurallara uyarak değişken atamadım commend yazmadım. Grünce insan zeniyor. Tembelim ne yapim. Mühendis kahveyi projeye dnüştüren bir insan evladıdır.

sandman bunu yazdı Birde cnr sana notum abi ne eğitim hayatım boyunca nede iş hayatımda o kadar python kodu yazdım bir kere bile byle düzenli kurallara uyarak değişken atamadım commend yazmadım. Grünce insan zeniyor. Tembelim ne yapim. müdür normalde ben de yazmıyordum, sonra bi baktım, yazıyom yazıyom, 3-4 ay sonra ben bu kodu nası yazmışım amk oluyom :S, o yüzden hatırlatıcı commentler koymayı iyice alışkanlık edindim :D Abi ben hep kendimi yeniden keşfetme taraftarıyım:P Mühendis kahveyi projeye dnüştüren bir insan evladıdır.

Birde cnr sana notum abi ne eğitim hayatım boyunca nede iş hayatımda o kadar python kodu yazdım bir kere bile byle düzenli kurallara uyarak değişken atamadım commend yazmadım. Grünce insan zeniyor. Tembelim ne yapim. müdür normalde ben de yazmıyordum, sonra bi baktım, yazıyom yazıyom, 3-4 ay sonra ben bu kodu nası yazmışım amk oluyom :S, o yüzden hatırlatıcı commentler koymayı iyice alışkanlık edindim :D Bizim olduğumuz her yerde herşey bizim yüzümüzden olmuştur. Ben benim amk bana bişey olmasın!