Სარჩევი:

სახის თვალთვალის მოწყობილობა! პითონი და არდუინო: 5 ნაბიჯი
სახის თვალთვალის მოწყობილობა! პითონი და არდუინო: 5 ნაბიჯი

ვიდეო: სახის თვალთვალის მოწყობილობა! პითონი და არდუინო: 5 ნაბიჯი

ვიდეო: სახის თვალთვალის მოწყობილობა! პითონი და არდუინო: 5 ნაბიჯი
ვიდეო: ფარული კამერა - თვალთვალი მობილურით 2024, ივლისი
Anonim
Image
Image
სახის თვალთვალის მოწყობილობა! პითონი და არდუინო
სახის თვალთვალის მოწყობილობა! პითონი და არდუინო
სახის თვალთვალის მოწყობილობა! პითონი და არდუინო
სახის თვალთვალის მოწყობილობა! პითონი და არდუინო

ავტორი Techovator0819 ჩემი Youtube არხი დაიცავით მეტი ავტორის მიერ:

IoT: ამინდის ყუთი (მორგებული სიგნალიზაციით და ტაიმერით)
IoT: ამინდის ყუთი (მორგებული სიგნალიზაციით და ტაიმერით)
IoT: ამინდის ყუთი (მორგებული სიგნალიზაციით და ტაიმერით)
IoT: ამინდის ყუთი (მორგებული სიგნალიზაციით და ტაიმერით)
მრავალფუნქციური ავტონომიური რობოტი: "აქტივი"
მრავალფუნქციური ავტონომიური რობოტი: "აქტივი"
მრავალფუნქციური ავტონომიური რობოტი: "აქტივი"
მრავალფუნქციური ავტონომიური რობოტი: "აქტივი"

შესახებ: მე უბრალოდ მიყვარს ახალი ნივთების შექმნა. ისევე როგორც მიკრო კონტროლერებთან დაკავშირებული საკითხები, მექანიკური ინჟინერია, ხელოვნური ინტელექტი, კომპიუტერული მეცნიერება და ყველაფერი რაც მაინტერესებს. აქ ნახავთ ყველაფერს… მეტი Techovator0819- ის შესახებ »

გამარჯობა ყველას, ვინც კითხულობს ამ სახელმძღვანელოს. ეს არის სახის თვალთვალის მოწყობილობა, რომელიც მუშაობს პითონის ბიბლიოთეკაზე სახელწოდებით OpenCV. CV ნიშნავს "კომპიუტერული ხედვა". შემდეგ შევქმენი სერიული ინტერფეისი ჩემს კომპიუტერსა და ჩემს Arduino UNO- ს შორის. ეს ნიშნავს, რომ ეს არ მუშაობს მხოლოდ პითონზე.

ეს მოწყობილობა ამოიცნობს თქვენს სახეს ჩარჩოში, შემდეგ ის აგზავნის გარკვეულ ბრძანებებს არდუინოს, რომ კამერა ისე განათავსოს, რომ დარჩეს ჩარჩოს შიგნით! Კარგად ჟღერს? მოდი მაშინვე შევიდეთ მასში.

მარაგები

1. არდუინო გაერო

2. 2 x Servo Motors (ნებისმიერი servo motors იქნება კარგი, მაგრამ მე გამოვიყენე Tower Pro SG90)

3. პითონის დაყენება

4. OpenCV- ის დაყენება

5. ვებ-კამერა

ნაბიჯი 1: დააინსტალირეთ პითონი და OpenCV

პითონის დაყენება საკმაოდ წინ არის!

www.python.org/downloads/

თქვენ შეგიძლიათ მიყევით ზემოთ მოცემულ ბმულს, რომ გადმოწეროთ პითონის ვერსია (Mac, Windows ან Linux), რომელიც თქვენთვის საუკეთესოა (64 ბიტიანი ან 32 ბიტიანი). დანარჩენი ინსტალაციის პროცესი მარტივია და თქვენ იხელმძღვანელებთ ინტერფეისით.

ინსტალაციის დასრულების შემდეგ გახსენით თქვენი ბრძანების სტრიქონი და ჩაწერეთ შემდეგი:

pip დააინსტალირეთ opencv-python

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

მას შემდეგ რაც შევქმენით გარემო და ყველა წინაპირობა, ვნახოთ როგორ შეგვიძლია რეალურად ავაშენოთ ეს!

ნაბიჯი 2: რა არის ჰარის მსგავსი თვისებები?

ჰარის მსგავსი მახასიათებლები ციფრული გამოსახულების მახასიათებლებია. სახელი მოდის ჰაარის ტალღებიდან. ეს არის კვადრატული ფორმის ტალღების ოჯახი, რომლებიც გამოიყენება ციფრული გამოსახულების მახასიათებლების დასადგენად. ჰარის კასკადები არის ძირითადად კლასიფიკატორი, რომელიც გვეხმარება ობიექტების (ჩვენს შემთხვევაში სახეების) გამოვლენაში ბეწვის მსგავსი თვისებების გამოყენებით.

ჩვენს შემთხვევაში, სიმარტივისთვის, ჩვენ გამოვიყენებთ წინასწარ გაწვრთნილ ჰარის კასკადებს სახეების დასადგენად. თქვენ შეგიძლიათ მიყევით github გვერდის ამ ბმულს და ჩამოტვირთოთ xml ფაილი ჰარის კასკადისათვის.

1. დააწკაპუნეთ 'haarcascade_frontalface_alt.xml'

2. დააწკაპუნეთ ღილაკზე "ნედლეული" კოდის ფანჯრის ზედა მარჯვენა ნაწილში.

3. ის მიგიყვანთ სხვა გვერდზე მხოლოდ ტექსტით.

4. დააწკაპუნეთ მარჯვენა ღილაკით და დააჭირეთ ღილაკს "შენახვა როგორც.."

5. შეინახეთ იგი იმავე დირექტორიაში ან საქაღალდეში, როგორც პითონის კოდის, რომლის წერასაც აპირებთ.

ნაბიჯი 3: კოდირება პითონში

იმპორტი cv2

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

ჩვენ შემოვიტანთ ყველა საჭირო ბიბლიოთეკას.

ard = სერიული. სერიული ("COM3", 9600)

ჩვენ ვქმნით სერიულ ობიექტს სახელწოდებით 'ard'. ჩვენ ასევე მიუთითებთ პორტის სახელს და BaudRate როგორც პარამეტრებს.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

ჩვენ ვქმნით სხვა ობიექტს ჩვენი ჰარის კასკადისათვის. დარწმუნდით, რომ HaarCascade ფაილი რჩება იმავე საქაღალდეში, როგორც ეს პითონის პროგრამა.

vid = cv2. ვიდეო გადაღება (0)

ჩვენ ვქმნით ობიექტს, რომელიც იღებს ვიდეოკამერას. 0, როგორც პარამეტრი ნიშნავს პირველ ვებ კამერას, რომელიც დაკავშირებულია ჩემს კომპიუტერთან.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

მართალია:

_, frame = vid.read ()#კითხულობს მიმდინარე ჩარჩოს ცვლადი ჩარჩოში ნაცრისფერი = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#გარდაქმნის ჩარჩოს -> ნაცრისფერი მასშტაბის გამოსახულებას#შემდეგი ხაზი ამოიცნობს სახეებს. #პირველი პარამეტრი არის სურათი, რომელზედაც გსურთ აღმოაჩინოთ #minSize = () განსაზღვრავს სახის მინიმალურ ზომას პიქსელებში #დააწკაპუნეთ ზემოთ მოცემულ ბმულზე კასკადის კლასიფიკაციის სახეების შესახებ = face_cascade.detectMultiScale (ნაცრისფერი, minSize = (80, 80), minNeighours = 3) #A მარყუჟისათვის სახეების გამოვლენის მიზნით. for (x, y, w, h) in სახეები: cv2. მართკუთხედი (ჩარჩო, (x, y), (x+w, y+h), (255, 0, 0), 2)#ხატავს ოთხკუთხედს გარშემო სახე Xpos = x+(w/2)#ითვლის სახის ცენტრის X კოორდინატს. Ypos = y+(h/2) #ითვლის სახის ცენტრის Y კოორდინატს, თუ Xpos> 280: #შემდეგი კოდი ბლოკავს, შეამოწმეთ თუ არა სახე ard.write ('L'.encode ()) #on მარცხენა, მარჯვენა, ზედა ან ქვედა დროის მიმართ. ძილი (0.01) #კადრის ცენტრი. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) else: ard.write ('S'. კოდი ()) time.sleep (0.01) შესვენება cv2.imshow ('ჩარჩო', ჩარჩო)#აჩვენებს ჩარჩოს ცალკეულ ფანჯარაში. k = cv2.waitKey (1) & 0xFF თუ (k == ord ('q')): #if 'q' დაჭერილია კლავიატურაზე, ის გამოდის while მარყუჟიდან. შესვენება

cv2.destroyAllWindows () #ხურავს ყველა ფანჯარას

ard.close () #ხურავს სერიულ კომუნიკაციას

vid.release () #შეწყვეტს ვიდეოს მიღებას ვებკამერიდან.

ნაბიჯი 4: არდუინოს დაპროგრამება

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

#ჩართეთ

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

void setup () {

// განათავსეთ თქვენი კონფიგურაციის კოდი აქ, ერთხელ გასაშვებად: Serial.begin (9600); servoX.atach (9); servoY.atach (10); servoX. დაწერეთ (x); servoY. დაწერეთ (y); დაგვიანება (1000); }

char შეყვანა = ""; // სერიული შეყვანა ინახება ამ ცვლადში

ბათილი მარყუჟი () {

// განათავსეთ თქვენი მთავარი კოდი აქ განმეორებით გასაშვებად: if (Serial.available ()) {// ამოწმებს არის თუ არა რაიმე მონაცემი სერიული ბუფერის შეყვანისას = Serial.read (); // კითხულობს მონაცემებს ცვლადში if (input == 'U') {servoY.write (y+1); // არეგულირებს სერვო კუთხეს შეყვანის y += 1 შესაბამისად; // განაახლებს კუთხის მნიშვნელობას} else if (input == 'D') {servoY.write (y-1); y -= 1; } else {servoY.write (y); } if (შეყვანა == 'L') {servoX.write (x-1); x -= 1; } else if (input == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } input = ""; // ასუფთავებს ცვლადს} // პროცესი იმეორებს !!:)}

ნაბიჯი 5: დასკვნა

ეს არის ერთი ლამაზი და ინტერაქტიული გზა, რომლის საშუალებითაც შეგიძლიათ შეიმუშაოთ კომპიუტერის ხედვა თქვენს არდუინოს პროექტებში. კომპიუტერული ხედვა რეალურად საკმაოდ სახალისოა. და მე ნამდვილად ვიმედოვნებ, რომ თქვენ მოგეწონათ. თუ კი, შემატყობინეთ კომენტარებში. და გთხოვთ გამოიწეროთ ჩემი youtube არხი. მადლობა წინასწარ <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

გირჩევთ: