İçindekiler:

Opencv Yüz Algılama, Eğitim ve Tanıma: 3 Adım
Opencv Yüz Algılama, Eğitim ve Tanıma: 3 Adım

Video: Opencv Yüz Algılama, Eğitim ve Tanıma: 3 Adım

Video: Opencv Yüz Algılama, Eğitim ve Tanıma: 3 Adım
Video: Python - OpenCV ile Yüz Tanıma 2024, Kasım
Anonim
Opencv Yüz Algılama, Eğitim ve Tanıma
Opencv Yüz Algılama, Eğitim ve Tanıma

OpenCV, bulanıklaştırma, görüntü harmanlama, görüntünün yanı sıra video kalitesini iyileştirme, eşikleme vb. gibi temel görüntü işleme görevlerini gerçekleştirmek için çok popüler olan açık kaynaklı bir bilgisayarlı görü kitaplığıdır. Görüntü işlemeye ek olarak, çeşitli önceden eğitilmiş derin öğrenme sağlar. eldeki basit görevleri çözmek için doğrudan kullanılabilen modeller.

opencv kurulumu için bu bağlantıyı kullanın

www.instructables.com/id/Opencv-and-Python…

Adım 1: Gerçek Zamanlı Videoda Yüz Algılama

google'da birçok yüz algılama programı için arama yapabilirsiniz ve algılanan yüzler, eğitim ve etiketleme gibi daha fazla görüntü işleme için bir klasöre kaydedilmelidir. 30 örnek toplayacağız

cv2'yi içe aktar

numpy'yi np olarak içe aktar

os ithalat sys

kamera = cv2. VideoCapture(0)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml") #harcascade dosya yolunuzu ekleyin

isim = raw_input("Adı ne? ")

#tüm dosyalar Users/prasad/Documents/images klasörüne kaydedilecek

dirName = "/Users/prasad/Documents/images/" + isim

print(dirName) os.path.exists(dirName) değilse: os.makedirs(dirName) print("Dizin Oluşturuldu") else: print("Ad zaten var") sys.exit()

sayı = 1

#30 örnek toplayacağız

while sayımı 30: break # frame = frame.array grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) yüzler = faceCascade.detectMultiScale(gri, 1.5, 5) için (x, y, w, h) yüzlerde: roiGray = gri[y:y+h, x:x+w] dosyaAdı = dizinAdı + "/" + ad + str(sayım) + ".jpg" cv2.imwrite(dosyaAdı, roiGray) cv2.imshow("yüz", roiGray) cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count += 1 cv2.imshow('frame', frame) key = cv2.waitAnahtarı(1)

eğer anahtar == 27:

kırmak

#camera.release()

cv2.destroyAllWindows()

Adım 2: Örnek Resimlerinizi Eğitin

Yüz Algılama tamamlandıktan sonra görüntüleri eğitmeye gidebiliriz.

osimport numpy'yi PIL'den np olarak içe aktar Görüntü içe aktar cv2 içe aktar turşu #seri içe aktar

#ser = serial. Serial('/dev/ttyACM0', 9600, zaman aşımı=1)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")

tanıyıcı = cv2.face. LBPHFaceRecognizer_create()

baseDir = os.path.dirname(os.path.abspath(_file_))

#images klasörünün altındaki resimleri eğitin

imageDir = os.path.join(baseDir, "images")

akımKimliği = 1

labelIds = {} yLabels = xTrain = #ser.write("Eğitim…..".encode())

os.walk(imageDir) içindeki kök, dizinler, dosyalar için:

dosyalarda dosya için print(root, dirs, files): print(file) if file.endswith("png") veya file.endswith("jpg"): path = os.path.join(root, file) label = os.path.basename(root) print(etiket)

etiket kimliklerinde etiket değilse:

labelIds[label] = currentId print(labelIds) currentId += 1

id_ = etiketKimlikleri[etiket]

pilImage = Image.open(path).convert("L") imageArray = np.array(pilImage, "uint8") yüzler = faceCascade.detectMultiScale(imageArray, scaleFactor=1.1, minNeighbors=5)

yüzlerde (x, y, w, h) için:

roi = imageArray[y:y+h, x:x+w] xTrain.append(roi) yLabels.append(id_)

open("labels", "wb") ile f olarak:

pickle.dump(labelIds, f) f.close()

tanıyıcı.train(xTrain, np.array(yLabels))

tanıyıcı.save("trainer.yml") print(labelIds)

Adım 3: Yüzleri Tanıma

eğitim bittikten sonra şimdi aşağıdaki kodu çalıştırabilirsiniz, böylece eğitimli yüzlerinizi tanımaya başlayacaktır.

içe aktar osos.environ['PYTHOINSPECT'] = 'açık' cv2'yi içe aktar numpy'yi np olarak içe aktar #RPi. GPIO'yu GPIO olarak zamandan içe aktar uykudan

open('labels', 'rb') ile f olarak:

dicti = pickle.load(f) f.close()

kamera = cv2. VideoCapture(0)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")

tanıyıcı = cv2.face. LBPHFaceRecognizer_create() tanıyıcı.read("trainer.yml")

yazı tipi = cv2. FONT_HERSHEY_SIMPLEX

son =''

#for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):

while True: ret, frame = camera.read() gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5) for (x, y, w, h) yüzlerde: roiGray = gri[y:y+h, x:x+w]

id_, conf = tanıyıcı.predict(roiGray)

isim için dicti.items() içindeki değer:

if değer == id_: print(isim) cv2.putText(çerçeve, isim, (x, y), yazı tipi, 2, (0, 0, 255), 2, cv2. LINE_AA) if isim!=son: son= name if conf <= 70: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow('çerçeve', çerçeve)

anahtar = cv2.waitKey(1)

eğer anahtar == 27:

cv2.destroyAllWindows()'u kır

Önerilen: