Mündəricat:

OpenCV istifadə edərək Pythonda Rəng Algılama: 8 Addım
OpenCV istifadə edərək Pythonda Rəng Algılama: 8 Addım

Video: OpenCV istifadə edərək Pythonda Rəng Algılama: 8 Addım

Video: OpenCV istifadə edərək Pythonda Rəng Algılama: 8 Addım
Video: Course Lesson 1 of 10: Raspberry Pi Pico 4WD Smart Car Kit from SunFounder by Robojax 2024, Iyul
Anonim
Image
Image

Salam! Bu təlimat, openCV kitabxanasından istifadə edərək pythonda bir şəkildən müəyyən bir rəngin necə çıxarılacağını izah etmək üçün istifadə olunur. Əgər bu texnikaya yenisinizsə, narahat olmayın, bu təlimatın sonunda öz rəng aşkarlama proqramınızı proqramlaşdıra biləcəksiniz.

Aşağıdakı funksiyalar və ya öyrənəcəyiniz texnikalar deyə bilərik, 1. Bir şəkli necə oxumaq olar

2. Track Barlar necə yaradılır

3. Parça çubuqlarından istifadə edərək Hue, Saturation və görüntünün dəyərini necə tənzimləmək olar

4. Və sonra son çıxışınız olacaq

Aşağıda əlavə etdiyim çıxışın videosunu izləyə bilərsiniz.

Beləliklə, başlayaq

Təchizat

  • Python 3
  • openCV kitabxanası
  • numpy kitabxana

Addım 1: Kitabxanaların idxalı

Kitabxanaların idxalı
Kitabxanaların idxalı

Şəkil göstərildiyi kimi sarı Ferrari -dir və həmin şəkildən yalnız sarı rəng çıxarmaq üçün proqramlaşdıracağıq

İlk addım kitabxanalarımızı idxal etməkdir

1. OpenCV kitabxanası daxil olmaqla. Pythonda cv2 adlanır

2. Np kimi kitabxananın daxil edilməsi. "As" bizə np olaraq numpy etməyə imkan verir, buna görə də təkrar -təkrar numpy yazmağa ehtiyac yoxdur

Addım 2: İz çubuqlarının yaradılması

Track Barlar Yaratmaq
Track Barlar Yaratmaq

Parça Çubuqları, bir görüntüdə Hue, Doyma və Dəyərin dəyərini tənzimləmək üçün yaradılmışdır.

cv2.namedWindow ("TrackBars") Bu kod xətti yeni bir çıxış pəncərəsi yaratmaq üçün istifadə olunur və pəncərənin adı TrackBars olaraq verilir (İstədiyiniz adı verə bilərsiniz)

cv2.resizeWindow ("TrackBars", 600, 250) Bu funksiya bir pəncərənin ölçüsünü dəyişmək üçün istifadə olunur. "TrackBars", bu adı yazdığım üçün TrackBars pəncərəsinin ölçüsünü dəyişdirmək istədiyim üçün ölçüsünü dəyişdirmək istədiyiniz pəncərə üçündür. Ardından iki tam ədəd gəlir. Bu iki tam ədəd eni və hündürlüyüdür. Ölçünü dəyişdirmək üçün bu iki rəqəmlə oynaya bilərsiniz

Addım 3: Rəng, Doyma və Dəyər üçün TrackBars Yaratmaq

Rəng, Doyma və Dəyər üçün TrackBars Yaratmaq
Rəng, Doyma və Dəyər üçün TrackBars Yaratmaq
Rəng, Doyma və Dəyər üçün TrackBars Yaratmaq
Rəng, Doyma və Dəyər üçün TrackBars Yaratmaq

İndi Hue, Doyma və dəyər üçün cəmi 6 TrackBars yaradacağıq. Hər birinin iki, yəni minimum 1 və maksimum 1 olacaq. OpenCV -nin createTrackbar funksiyasından istifadə edəcəyik. Əvvəlcə bu funksiyanın sintaksisini görəcəyik.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Bu, çaşqınlıq yarada bilər, amma hər bir addımı keçəcəyimizdən narahat olmayın. Unutmayın ki, açıq CV -də rəng tonları 179, doyma 255 və dəyər 255 -dir.

1. Hue min üçün TrackBar yaratmaq:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, boş)

Bu Hue min-də iz çubuğunun adı, TrackBars əsas pəncərə, 0 kaydırıcımızın olacağı mövqe və 179, silindirin 0-179-dan hərəkət edəcəyi deməkdir.

2. Hue max üçün TrackBar yaratmaq:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, boş)

Bu Hue max-da iz çubuğunun adı, TrackBars əsas pəncərə, 179, kaydırıcımızın olacağı mövqe və 179, silindirin 179-0-dan hərəkət edəcəyi deməkdir.

3. Eynilə, şəkildə göstərildiyi kimi sat min, sat max, val min və val max üçün addımları təkrarlayın

Ağ fonlu şəkil çıxış şəklidir. Track barlarınız necə görünəcək

Addım 4: Şəkli necə oxumaq və ölçüsünü dəyişdirmək olar

Şəkli necə oxumaq və ölçüsünü dəyişdirmək olar
Şəkli necə oxumaq və ölçüsünü dəyişdirmək olar

cv2.imread () şəkli oxumağa imkan verir. Nəzərə almalı olduğunuz vacib bir fikir, şəkilinizin yerləşdiyi yerin proqramın saxlandığı qovluqda olmasıdır. While döngəsini qoyacağıq, çünki görüntünü oxuyana qədər işləməlidir və ya şərt doğru olana qədər deyə bilərik

img = cv2.imread ("ferrari.jpg")

  • Burada görüntünü saxladığım "img" dəyişən bir ad yaratdım
  • İçərisində cv2.imread ikiqat alıntı daxilində uzantısı olan görüntünün adını yazın

Bir görüntünün ölçüsünü dəyişdirmək üçün cv2.resize funksiyasından istifadə edəcəyik. Bu hissə isteğe bağlıdır, ölçüsünü dəyişdirmək istəyirsinizsə, bu funksiyadan istifadə edə bilərsiniz

Cv2.resize daxilində əvvəlcə görüntünün saxlandığı dəyişən adı yazın, sonra eni və hündürlüyü

Addım 5: Şəkilə tətbiq etmək üçün Track Bar Dəyərlərini Oxuyun

Şəkilə tətbiq etmək üçün Track Bar dəyərlərini oxuyun
Şəkilə tətbiq etmək üçün Track Bar dəyərlərini oxuyun
Şəkilə tətbiq etmək üçün Track Bar dəyərlərini oxuyun
Şəkilə tətbiq etmək üçün Track Bar dəyərlərini oxuyun

Tamam, indi izləmə çubuğu dəyərlərini oxuyacağıq ki, şəklimizə tətbiq edə bilək. Cv2.getTrackbarPos () funksiyasından istifadə edərək dəyərləri alacağıq.

O hissədən başlayaq…

h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")

Yuxarıdakı ifadədə Hue min dəyərini saxlayacağım h_min dəyişən bir ad yaradıram. Beləliklə, cv2.getTrackbarPos daxilində 1 -ci arqument "Hue min" olardı, çünki hue min dəyərlərini istəyirəm (Orfoqrafiya createTrackbar funksiyası ilə tam eyni olmalıdır) və 2 -ci arqument aid olduğu trackbar pəncərəsinin adı olardı.

  • Eyni prosesi h_max və yuxarıdakı şəkildə göstərildiyi kimi qalan funksiyalar üçün təkrarlayın və sonra print () istifadə edərək bütün dəyərləri çap edin.
  • Çıxış ikinci şəkildə göstərilir. H_min, h_max, s_min, s_max, v_min, s_max dəyərlərini çap edir

Addım 6: Şəkli Göstərmək və Üst və Alt Limiti Ayarlamaq

Şəkli Göstərmək və Üst və Alt Limiti Ayarlamaq
Şəkli Göstərmək və Üst və Alt Limiti Ayarlamaq

İndi görüntünün süzülməsi üçün istifadə edəcəyimiz rəng, doyma və dəyərin minimum və maksimum dəyərinə sahibik ki, bir görüntünün xüsusi rəngli çıxışı olsun.

Bunun üçün cv2.inRange funksiyasından istifadə edərək bir maska yaradacağıq. Və bundan əvvəl rəng, doyma və dəyərin yuxarı və aşağı həddini təyin edəcəyik

Beləliklə, "aşağı" bir dəyişən adı yaradın və numpy array funksiyasından istifadə edərək hər 3 üçün min aralığını aşağıdakı kimi təyin edin

aşağı = np.array ([h_min, s_min, v_min])

Üst üçün eyni addımı təkrarlayın

yuxarı = np.array ([h_max, s_max, v_max])

İndi aşağıdakı kimi bir maska hazırlayacağıq

mas = cv2.inRange (ölçüsünü dəyiş, aşağı, yuxarı) İçərisində cv2.inRang 1 -ci arqument mənim son şəklimin saxlandığı dəyişən olardı, 2 -ci arqument aşağı hədd, 3 -cü arqument yuxarı hədd olardı.

İndi əsas görüntüyü və maskanı göstərəcəyik. Göstərmək üçün cv2.imshow () funksiyasından istifadə edəcəyik

cv2.imshow ("img", ölçüsünü dəyiş) Bu, əsas görüntünü göstərmək üçündür. 1 -ci arqument, istədiyiniz hər hansı bir adı verə biləcəyiniz pəncərənin adıdır və 2 -ci arqument, mənim göstərmək istədiyiniz əsas şəklimin saxlanıldığı dəyişkəndir.

Eyni şəkildə maska üçün addımları təkrarlayın

cv2.imshow ("Çıxış", maska)

Addım 7: İndi son addım

İndi son addım
İndi son addım

Bu son mərhələdə avtomobilin rəngini çıxaracağıq və göstərəcəyik.

Bir dəyişən ad nəticəsi yaratdım. Yenə də istədiyiniz ad verə bilərsiniz. Beləliklə, şəkillərə birlikdə əlavə edəcəyimiz və yeni bir şəkil yaradacağımız cv2.bitwise_and () funksiyasından istifadə edəcəyik. Və hər iki şəkildəki piksellər harada olursa olsun, bunu bəli və ya "1" olaraq qəbul edəcək.

nəticə = cv2.bitwise_and (ölçüsünü dəyiş, ölçüsünü dəyiş, maska = maska)

  • Bunda 1 -ci arqument imicimiz olacaq
  • 2 -ci arqument həm də orijinal imicimiz olacaq, ancaq əvvəllər yaratdığımız maskadan sonra
  • Və nəhayət imshow funksiyasından istifadə edərək nəticəni göstərin

Bu son addımı yapışdırıb kopyalayın, bu sadəcə gecikmədir və klaviaturada "a" düyməsinə basaraq çıxış pəncərəsindən çıxa bilərsiniz

Addım 8: Son Çıxışlar

Tövsiyə: