Სარჩევი:

Opencv სახის ამოცნობა: 4 ნაბიჯი
Opencv სახის ამოცნობა: 4 ნაბიჯი

ვიდეო: Opencv სახის ამოცნობა: 4 ნაბიჯი

ვიდეო: Opencv სახის ამოცნობა: 4 ნაბიჯი
ვიდეო: რა ხდება კანონიერი ქურდების საკნებში 2024, ივლისი
Anonim
Opencv სახის ამოცნობა
Opencv სახის ამოცნობა

სახის ამოცნობა დღესდღეობით საკმაოდ გავრცელებული მოვლენაა, ბევრ აპლიკაციაში, როგორიცაა სმარტფონები, ბევრი ელექტრონული გაჯეტი. ამგვარი ტექნოლოგია მოიცავს უამრავ ალგორითმს და ინსტრუმენტს და სხვ. რომელიც იყენებს ჩამონტაჟებულ SOC პლატფორმებს, როგორიცაა Raspberry Pi და ღია კოდის კომპიუტერული ხედვა ბიბლიოთეკები, როგორიცაა OpenCV, ახლა თქვენ შეგიძლიათ დაამატოთ სახის ამოცნობა თქვენს საკუთარ პროგრამებში, როგორიცაა უსაფრთხოების სისტემები.

ამ პროექტში მე გეტყვით როგორ ავაშენოთ სახის ამოცნობა Raspberry Pi– ს გამოყენებით და ჩვენ გამოვიყენეთ arduino+Lcd პიროვნების სახელის საჩვენებლად.

ნაბიჯი 1: ის, რაც გჭირდებათ

ნივთები რაც თქვენ გჭირდებათ
ნივთები რაც თქვენ გჭირდებათ

1. ჟოლოს პი

2.არდინო უნო / ნანო

3.16x2 lCD დისპლეი

4. RASPI-CAMERA / WEBcam (უკეთეს შედეგს ვანიჭებ ვებკამერას)

ნაბიჯი 2: გახსნა-დანერგვა და ინსტალაცია

Opencv-Intro და ინსტალაცია
Opencv-Intro და ინსტალაცია

OpenCV (ღია კოდის კომპიუტერული ხედვის ბიბლიოთეკა) არის ძალიან სასარგებლო ბიბლიოთეკა - ის შეიცავს ბევრ სასარგებლო ფუნქციას, როგორიცაა ტექსტის ამოცნობა, სახის ამოცნობა, ობიექტების გამოვლენა, სიღრმის რუქების შექმნა და მანქანათმცოდნეობა.

ეს სტატია გაჩვენებთ თუ როგორ უნდა დააინსტალიროთ Opencv და სხვა ბიბლიოთეკები Raspberry Pi– ზე, რაც გამოგადგებათ ობიექტების გამოვლენისა და სხვა პროექტების განხორციელებისას. იქიდან ჩვენ ვისწავლით თუ როგორ უნდა შეასრულოთ გამოსახულება და ვიდეო ოპერაციები ობიექტის ამოცნობისა და მანქანათმცოდნეობის პროექტის განხორციელებით. კერძოდ, ჩვენ დავწერთ მარტივ კოდს გამოსახულების სახეების გამოსავლენად.

რა არის OpenCV?

OpenCV არის ღია კომპიუტერული ხედვისა და მანქანათმცოდნეობის პროგრამული ბიბლიოთეკა. OpenCV გამოდის BSD ლიცენზიით, რაც უფასოა როგორც აკადემიური, ასევე კომერციული გამოყენებისთვის. მას აქვს C ++, Python და Java ინტერფეისები და მხარს უჭერს Windows, Linux, Mac OS, iOS და Android. OpenCV შეიქმნა გამოთვლითი ეფექტურობისთვის და რეალურ დროში პროგრამებზე ძლიერი ფოკუსირებისთვის.

როგორ დავაყენოთ OpenCV ჟოლოს პიზე?

OpenCV– ის ინსტალაციისთვის, ჩვენ გვჭირდება პითონი დაყენებული. მას შემდეგ, რაც Raspberry Pis წინასწარ არის დატვირთული Python– ით, ჩვენ შეგვიძლია პირდაპირ დავაყენოთ OpenCV.

ჩაწერეთ ქვემოთ მოცემული ბრძანებები, რომ დარწმუნდეთ, რომ თქვენი Raspberry Pi განახლებულია და განაახლოთ თქვენს Raspberry Pi– ზე დაინსტალირებული პაკეტები უახლეს ვერსიებზე.

sudo apt-get updatesudo apt-get განახლება

ჩაწერეთ შემდეგი ბრძანებები ტერმინალში, რომ დააინსტალიროთ OpenCV– სთვის საჭირო პაკეტები თქვენს Raspberry Pi– ზე.

sudo apt install libatlas3-base libsz2 libharfbuzz0b libtiff5 libjasper1 libilmbase12 libopenexr22 libilmbase12 libgstreamer1.0-0 libavcodec57 libavformat57 libavutil55 libswscale4 libqtgui4 libqt4-test libqtcore4

ჩაწერეთ შემდეგი ბრძანება, რომ დააინსტალიროთ OpenCV 3 Python 3 – ისთვის თქვენს Raspberry Pi– ზე, pip3 გვეუბნება, რომ OpenCV დაინსტალირდება Python 3 –ზე.

sudo pip3 დააინსტალირეთ opencv-contrib-python libwebp6

ახლა, OpenCV უნდა იყოს დაინსტალირებული.

(თუ რაიმე შეცდომა მოხდა: მაინც შეგიძლიათ ამის გაკეთება ქვემოთ მოცემულ ბმულზე

https://www.instructables.com/id/Raspberry-Pi-Hand…)

ახლა ნუ იჩქარებთ, ჩვენ უნდა შევამოწმოთ ის სწორად იყო დაინსტალირებული თუ არა

შეამოწმე შენი ღია ვიდეო:

1. შედი შენს ტერმინალში და typr "პითონი"

2. შემდეგ ჩაწერეთ "იმპორტი cv2".

3. შემდეგ ჩაწერეთ "cv2._ ვერსია_".

შემდეგ დააინსტალირეთ ეს ბიბლიოთეკები

pip3 დააინსტალირეთ python-numpy

pip3 დააინსტალირეთ python-matplotlib

ტესტის კოდი გამოსახულების სახეების დასადგენად:

იმპორტი cv2

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

image = cv2.imread ('თქვენი ფაილის სახელი') #მაგალითი cv2.imread ('home/pi/Desktop/filename.jpg')

თქვენ მიიღებთ გამომავალს ისე, როგორც კვადრატული ყუთები ჩამოყალიბდა იმ ადამიანების სახეებზე, ვინც სურათზეა.

ნაბიჯი 3: სახის გამოვლენა და ამოცნობა რეალურ დროში ვიდეოში

იმპორტი cv2

იმპორტირებული numpy როგორც np

იმპორტი os

სერიული იმპორტი

ser = serial. სერიული ('/dev/ttyACM0', 9600, ვადა = 1) #/dev/ttyACM0 შეიძლება შეიცვალოს თქვენს შემთხვევაში, ეს დამოკიდებულია არდუინოზე

cascadePath = "haarcascade_frontalface_default.xml"

faceCascade = cv2. CascadeClassifier (cascadePath)

აღიარებელი = cv2.face.createLBPHFaceRecognizer ()

სურათები =

ეტიკეტები =

ფაილის სახელისთვის os.listdir ('მონაცემთა ნაკრები'):

im = cv2.imread ("მონაცემთა ნაკრები/"+ფაილის სახელი, 0)

images.append (im)

labels.append (int (filename.split ('.') [0] [0]))

#დაბეჭდე ფაილის სახელი

names_file = ღია ('labels.txt')

სახელები = names_file.read (). გაყოფა ('\ n')

ამოცნობა

ბეჭდვა 'ტრენინგი დასრულებულია. რა რა '

font = cv2. FONT_

HERSHEY_SIMPLEXcap = cv2. ვიდეო გადაღება (1) # თქვენი ვიდეო მოწყობილობა

lastRes = "" რაოდენობა = 0

ხოლო (1):

_, frame = cap.read ()

ნაცრისფერი = cv2.cvtColor (ჩარჩო, cv2. COLOR_BGR2GRAY)

სახეები = faceCascade.detectMultiScale (ნაცრისფერი, 1.3, 5)

დათვლა+= 1

for (x, y, w, h) სახეებში:

cv2. მართკუთხედი (ჩარჩო, (x, y), (x+w, y+h), (255, 0, 0), 2)

თუ რიცხვი> 20: res = სახელები [აღიარებელი. წინასწარმეტყველება (ნაცრისფერი [y: y+h, x: x+w])-1]

თუ res! = lastRes:

lastRes = რეზ

დაბეჭდე lastRes

ser.write (lastRes)

რაოდენობა = 0

შესვენება

cv2.imshow ('ჩარჩო', ჩარჩო)

k = 0xFF და cv2.wait გასაღები (10)

თუ k == 27:

შესვენება

cap. გამოშვება ()

ser. დახურვა ()

cv2.destroyAllWindows ()

ნაბიჯი 4: კოდის გაშვება

კოდის გაშვება
კოდის გაშვება

1. ჩამოტვირთეთ წინა საფეხურზე თანდართული ფაილები

2. დააკოპირეთ ნაცრისფერი ფოტოები (6 სურათი/ ნიმუში…..) თქვენს მონაცემთა ნაკრების საქაღალდეში

1. ტომ კრუიზი 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 (მონაცემთა ნაკრების გამოსახულების ნომერი მონაცემთა ნაკრების უფრო ღია საქაღალდეში)

2. ბრედ პიტი -2_1, 2_2, 2_3, 2_4, 2_5, 2_6

3. ლომი -3_1, 3_2, 3_3, 3_4, 3_5, 3_6

4. Ironman4_1, 4_2, 4_3, 4_4, 4_5, 4_6

ზემოთქმულის მსგავსად, თქვენ შეგიძლიათ დაამატოთ ეტიკეტები შესაბამისი პირებისთვის,

ასე რომ, თუ პი აღმოაჩენს რაიმე სახეს 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 შორის, მაშინ ის იყო ტომ კრუზის მარკირებული, ასე რომ ფრთხილად იყავით ფოტოების ატვირთვისას ………………

და შემდეგ დაუკავშირეთ თქვენი arduino თქვენს ჟოლოს Pi და შეიტანეთ ცვლილებები main.py codeser = serial. Serial ('/dev/ttyACM0', 9600, timeout = 1) 3. ჩაწერეთ ყველა გადმოწერილი ფაილი (main.py, მონაცემთა ნაკრების საქაღალდე, haarcascade_frontalface_default.xml ერთ საქაღალდეში.)

3. ახლა გახსენით Raspi- ტერმინალი გაუშვით თქვენი კოდი "sudo python main.py"

გირჩევთ: