Mündəricat:

OpenCV Əsas Layihələri: 5 addım
OpenCV Əsas Layihələri: 5 addım

Video: OpenCV Əsas Layihələri: 5 addım

Video: OpenCV Əsas Layihələri: 5 addım
Video: Course Lesson 1 of 10: Raspberry Pi Pico 4WD Smart Car Kit from SunFounder by Robojax 2024, Iyul
Anonim
OpenCV Əsas Layihələri
OpenCV Əsas Layihələri

Bu layihədə canlı video axını ilə əlaqəli 4 sadə layihə vasitəsilə bəzi əsas OpenCV funksiyalarını araşdırırıq. Bunlar üz tanıma, arxa planın çıxarılması, kənarların xüsusi vizual göstərilməsi və canlı video axınına bulanıqlıq effekti tətbiq etməkdir. Bu layihələri sınamaqda əsas məqsədim, kompüter görmə sahəsində daha dərindən araşdırmağı planlaşdırdığım üçün OpenCV interfeysi ilə ayaqlarımı islatmaq idi.

Təchizat

  • Python işləyən kompüter
  • Açıq CV kitabxana, Numpy kitabxana, tkinter kitabxana, sys kitabxana
  • Kompüterə qoşulmaq üçün kamera (kompüterdə onsuz da yoxdursa)
  • Proqramın python faylı (bu təlimata daxil edilmişdir)
  • haarcascade xml faylı (bu təlimata daxil edilmişdir)

Addım 1: FaceDetect funksiyası

FaceDetect funksiyası
FaceDetect funksiyası
FaceDetect funksiyası
FaceDetect funksiyası

Bu funksiya kameranızın videosunu tutduğu hər hansı bir üzündə yaşıl kvadratlarla göstərir. Kodda, çəkdiyimiz videonu "ələ keçirmə" adlı bir obyektdə saxlamaq üçün cv2. VideoCapture () funksiyasından istifadə edirik. CAPTURE_INDEX, kompüterinizin video giriş siyahısındakı kameranızın indeksinə uyğun olaraq kompüteriniz tərəfindən təyin edilmiş bir rəqəmdir. Kompüterinizə bağlı bir xarici kameranız yoxdursa, 0 və ya 1 işləməlidir.

Face_cascade obyekti, cascadeClassifier funksiyasından və OpenCV github -da tapılan "haarcascade_frontalface_default.xml" faylından istifadə edərək işə salınır. Bu obyekti "üzlər" siyahısında aşkarlanan üzləri x koordinatı, y koordinatı, eni və hündürlüyünü tutan dörd tərəfli bir giriş olaraq saxlamaq üçün istifadə edirik. Daha sonra cv2.rectangle funksiyasından istifadə edərək üzü mükəmməl şəkildə əhatə edən bir düzbucaq çəkirik

Bu videodan OpenCV, caption.read () istifadə edərək və "img" adlandırdığımız bir çərçivədə saxladığımız müddətdə bir çox şəkil çəkir. Sonra hər bir şəkil istədiyimiz kimi şərh olunur və dəyişdirilir. FaceDetect üçün, ilk parametrdə verilən hər hansı bir görüntünü ikinci parametrdə göstərilən müəyyən bir rəng rənginə çevirən cvtColor funksiyasından istifadə edərək görüntünü boz edirik. İkinci parametr üçün məqbul dəyərlərin siyahısı onlayn olaraq tapıla bilər. Daha sonra, görüntünü pəncərənin adı və görünəcək şəkil çərçivəsi üçün simli olan imshow () funksiyasından istifadə edərək "Üzün aşkarlanması" adlı bir pəncərədə göstəririk.

Nəhayət, istifadəçinin cv2.waitKey () funksiyasından istifadə edərək q düyməsini daxil etməsini gözləyirik. 0xFF maskası 64 bitlik kompüterlər üçün konvensiya olaraq istifadə olunur. İstifadəçi video axını bitirdikdən sonra, faceDetect funksiyası çəkmə obyektini azad edir və sonra OpenCV interfeysi altında açılan digər pəncərələri məhv edir. Bütün digər funksiyalar oxşar bir dizayn quruluşuna uyğundur.

Addım 2: BackgroundRemove funksiyası

Fonksiyonu Sil
Fonksiyonu Sil
Fonksiyonu Sil
Fonksiyonu Sil

Bu funksiya videomuzun arxa hissəsini silməyə və yalnız ön planda şəkil buraxmağa çalışır. Bəzi kameralarda işləməyə bilər, çünki fərqli obyektlər/ ocaqlar çərçivəyə daxil olduqda aktivləşdirilən işıqlandırma tənzimləmə funksiyasından istifadə edirlər. BackgroundRemove funksiyanız işləmirsə, narahat olmayın- bu sadəcə sizin kameranız ola bilər!

Bu funksiyanı istifadə etmək üçün kamera çərçivəsindən uzaqlaşın və arxa plan şəklini çəkmək üçün "d" düyməsini basın. Arxa planda tutmaq istədiyiniz hərəkət edən cisimlərin olmaması vacibdir. Sonra, kamera çərçivəsinə geri addım ata bilərik. Funksiya işləyərsə, istifadəçi özünü yalnız funksiyanın video axınında görməlidir. Ön plandakı hər hansı bir səs/qara ləkə kameranın işıqlandırma tənzimləməsinin nəticəsi ola bilər. Başqa bir fon çəkmək üçün yenidən başlatmaq üçün "r" düyməsini basın, sonra yenidən "d" düyməsini basın.

Bu funksiya üçün bəzi əsas götürmə yolları, istifadəçinin d düyməsini basdığı anda qaldırılan "bayraq" booleanının istifadəsidir. Bu, arxa planı tutur və onu funksiya tərəfindən yayımlanan videodan silməyimizə imkan verir. Arka plan görüntüsünü ref_img -də saxlamağı hədəfləyirik ki, onu hər hansı bir hərəkətli obyekti tutan ön plan şəklindən fərqləndirək. Cv2.subtract () funksiyasından istifadə edərək arxa plan görüntüsündən ön plan görüntüsünü çıxarırıq və əksinə, dərhal sonra iki şəkildəki kiçik fərqləri ləğv edirik. Arxa fon qaralır.

Fgmask, bu iki görüntü arasındakı fərqdən istifadə edərək hazırlanır və sonra OpenCV cv2.bitwise_and () funksiyasından istifadə edərək video axını funksiyalarına tətbiq olunur.

Addım 3: VideoEdges funksiyası

VideoEdges funksiyası
VideoEdges funksiyası
VideoEdges funksiyası
VideoEdges funksiyası

Bu funksiya canlı video axınımızı qaytarır, ancaq hər şey qaralanda aşkar edilə bilən kənarları ağ rəngə çevrilir. Bu funksiyanı digər funksiyalardan fərqləndirən şey, orijinal videomuzu RBG formatından HSV-yə çevirməkdir ki, bu da rəng, doyma və variasiya deməkdir- bir videodan işıq və rəng işləmək üçün fərqli bir üsul. Bu üsulla bir filtr tətbiq edərək (red_low -dan red_high) videodakı konturları daha asan ayıra bilərik.

Canny Edge Detection, görüntünün kənarlarını aşkar etmək üçün istifadə olunur. Gri miqyaslı bir görüntünü giriş olaraq qəbul edir və çox mərhələli bir alqoritmdən istifadə edir.

Addım 4: VideoBlur Function

Video bulanıklığı funksiyası
Video bulanıklığı funksiyası
Video bulanıklığı funksiyası
Video bulanıklığı funksiyası

Bu funksiya video axınımıza bulanıqlıq effekti əlavə etmək üçün istifadə olunur. Sadə funksiya çərçivəmizdəki GaussianBlur cv2 funksiyasını çağırır. GaussianBlur funksiyası haqqında əlavə məlumatı burada tapa bilərsiniz:

opencv-python-tutroals.readthedocs.io/az/l…

Addım 5: Təkmilləşdirmələr

Bu layihədəki ən həssas funksiya, fon tənzimləmə funksiyasıdır, çünki işıqlandırma tənzimləmə funksiyası olmayan bir kameranın istifadəsini tələb edir. OpenCV kitabxanasında bu işıqlandırma tənzimləməsini hesablaya bilən və fonu (yaşıl ekrana bənzər) hamarca silə bilən daha yaxşı funksiyalar dəsti ola bilər.

Yalnız (x, y) koordinatlarını qaytarmaqdan başqa daha çox funksiyaya malik obyektlər yarada biləcək digər üz tanıma funksiyalarından da istifadə edə bilərik. Bəlkə də üzləri xatırlama qabiliyyətinə malik bir üz tanıma proqramını həyata keçirmək o qədər də çətin olmayacaq.

Blur funksiyası istifadəçi tərəfindən intuitiv idarə olunmaqla daha çox fərdiləşdirilə bilər. Məsələn, istifadəçi bulanıqlaşdırma effektinin intensivliyini tənzimləmək və ya bulanıqlaşdırmaq üçün çərçivə daxilində müəyyən bir sahə seçmək istəyə bilər.

Tövsiyə: