“OpenCV” hamda Python dasturlash tili orqali inson yuzini aniqlovchi dastur (2-qism:”Web camera”orqali inson yuzini aniqlash).

Biz “OpenCV” bilan Inson yuzini aniqlashni o’rgana yotgan edik. Faqat o’tgan safar biz rasmlar bilan ishlagan edik. Bu safar esa “Web camera“bilan jonli holatdagi yuzni aniqlashni o’rganamiz.

Ishni har doimgidek kutubxonani o’rnatishdan boshlaymiz.

pip install opencv-python
Python

Kutubxona muvofaqiyatli o’rnatilgandan so’ng yangi fayl yaratamiz va ichiga:

import cv2

yuz = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
Python

kodi orqali kutubxonani chaqirib inson yuzining parametrlarini yuklab olamiz.

O’tgan safar biz rasmni yuklab olgandik endi “Web camera“ni “kamera” nomli o’zgaruvchiga yuklaymiz:

kamera = cv2.VideoCapture(0)
Python

biz buyerda “OpenCV“kutubxonasidan “Web camera“dan kelayotgan ma’lumotlarni yukladik. E’tibor bergan bo’lsangiz “VideoCapture(0)“ga 0 ni qo’ydik sababi biz o’zimizning “web camera“mizdagi ma’lumotni olmoqchimiz
agarda boshqa kamera bo’lsa uni o’zgartirishingiz mumkin.
Davom etamiz.

Kamera ma’lumotlariga ulangandan so’ng uni hisob kitob qilish kerak. Albatta video shaklida, biz bilamizki videolar kadrlardan iborat shuning uchun har bir kadr uchun hisob kitob qilish kerak va biz buning uchun “while” siklidan foydalanamiz.

while True:
    success, img = kamera.read()
    kamera_rangi = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    yuzlar = yuz.detectMultiScale(kamera_rangi, 1.1, 19)
    for (x,y,w,h) in yuzlar:
        cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0),2)
        print(x,y,w,h,"yuz aniqlandi")

    cv2.imshow('natija', img)
    if cv2.waitKey(1) & 0xff == ord('q'):
        break
Python

Siklning ichida qabul qilinayotgan kadrlarni o’qish hamda ularni qanday rangda uzatishni kiritganmiz va albatta uning ma’lumotlarini o’qish.

Undan so’ng “for” siklida “yuzlar“nomli o’zgaruvchiga yuklangan yuzning ma’lumotlariga ramkani chizadi. Natija shu nomli oyna bilan ko’rinadi. Qachonki “X“tugmasi bosilsa ushbu sikl to’xtab, yana qayta ishga tushadi.

kamera.release()
cv2.destroyAllWindows()
Python

O’tgan safargidek dastur o’chib qolmasligi uchun ishlatilinadigan kodni dastur so’ngiga yozib qo’yamiz. Endi buni test qilishimiz kerak lekin ,men sizlarga buni yuzimni ko’rsatmasdan natijani ko’rsatishim mumun.

Bu yerda har bir kadrdagi ma’lum kordinatalarda yuz aniqlanganligi yozilgan hamda ushbu kordinatalardagi mening yuzim atrofiga o’tgan safardagidek ramka chizilgan edi. Xullas dastur ishlamoqda. Agar “Web camera” sizda mavjud bo’lsa, to’lliq kod bilan dasturni sinab ko’ring:

import cv2

yuz = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")

kamera = cv2.VideoCapture(0)

while True:
    success, img = kamera.read()
    kadrlar_rangi = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    yuzlar = yuz.detectMultiScale(kadrlar_rangi, 1.1, 19)
    for (x,y,w,h) in yuzlar:
        cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0),2)
        print(x,y,w,h,"yuz aniqlandi")

    cv2.imshow('natija', img)
    if cv2.waitKey(1) & 0xff == ord('q'):
        break

kamera.release()
cv2.destroyAllWindows()
Python

Ma’lumot sifatida shuni aytishim mumkunki, O’zbekiston shaharlaridagi trassa kameralari mashinalarni qizil chiroqdan o’tib ketganliklari va davlat raqamini aniqlash ayanan “OpenCV” dan foydalangan hoda amalga oshirishadi. Buning uchun talab qilinadigan narsa faqatgina shahar kameralariga ulanishga ruxsat. Dastur esa tahminan “Svetafor“larning qizil chirog’i yonish vaqti da mashinalar to’xtashi kerak bo’lgan kordinatada obyektning harakatini aniqlash va davlat raqamini ma’lumotlar bazasiga yuklash bilan bog’liq.

Sizlarga yetkazmoqchi bo’lganimiz shular edi.
Keyingi postlarda bundanda qiziqarli ma’lumotlarga ega bo’ling.

Mavzuga oid maqolalar