สารบัญ:

การติดตามใบหน้าโดยใช้ ARDUINO !!!: 7 ขั้นตอน
การติดตามใบหน้าโดยใช้ ARDUINO !!!: 7 ขั้นตอน

วีดีโอ: การติดตามใบหน้าโดยใช้ ARDUINO !!!: 7 ขั้นตอน

วีดีโอ: การติดตามใบหน้าโดยใช้ ARDUINO !!!: 7 ขั้นตอน
วีดีโอ: EP 27. Arduino ฉบับไวจนไฟลุก !! - สาระเดฟ ใน 3 นาที 2024, กรกฎาคม
Anonim
ติดตามใบหน้าโดยใช้ ARDUINO !!!
ติดตามใบหน้าโดยใช้ ARDUINO !!!

ในคำแนะนำก่อนหน้านี้ฉันได้แบ่งปันวิธีที่คุณสามารถสื่อสารระหว่าง Arduino และ Python โดยใช้โมดูล 'pyserial' และควบคุม LED หากคุณยังไม่ได้ดู ลองดูที่นี่: COMMUNICATION BETWEEN ARDUINO & PYTHON !

และวิธีที่คุณสามารถตรวจจับสีของวัตถุและติดตามบนหน้าจอได้ ลองดูที่นี่: การตรวจจับสีโดยใช้ OPENCV และ PYTHON

ในคำแนะนำนี้ ฉันจะแสดงวิธีติดตามใบหน้าโดยใช้ Arduino & Python และทำให้กล้องติดตามใบหน้า อาจฟังดูยาก แต่เชื่อฉันเถอะ สิ่งที่คุณต้องมีคือความรู้พื้นฐานเกี่ยวกับ Arduino และ Python

มาเริ่มกันเลย…

ขั้นตอนที่ 1: สิ่งที่คุณต้องการ:

สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ

ข้อกำหนดขั้นต่ำ ที่นี่ฉันได้จัดทำรายการส่วนหนึ่งของทุกสิ่งที่คุณต้องการ:

ข้อกำหนดด้านฮาร์ดแวร์:

  • Arduino UNO (Amazon US / Amazon EU)
  • เว็บแคม (Amazon US / Amazon EU)
  • เซอร์โว x 2 (Amazon US / Amazon EU)
  • เขียงหั่นขนม (Amazon US / Amazon EU)
  • ชุด Servo Pan Tilt (Amazon US / Amazon EU)

ความต้องการของซอฟต์แวร์:

  1. Python 2.7 (ควรติดตั้ง โดยปกติแล้ว Linux OS จะติดตั้งไว้ล่วงหน้า)
  2. OpenCV (คุณสามารถดาวน์โหลดแยกต่างหากหรือติดตั้งโดยใช้ 'pip install' อธิบายเพิ่มเติม)
  3. pyserial (สามารถติดตั้งได้ด้วย pip)
  4. งี่เง่า
  5. ฮาอาร์คาสเคด

หลังจากรวบรวมทุกสิ่งแล้ว เราสามารถไปยังขั้นตอนการติดตั้ง…

ขั้นตอนที่ 2: การตั้งค่าสภาพแวดล้อม Python:

การตั้งค่าสภาพแวดล้อม Python
การตั้งค่าสภาพแวดล้อม Python
การตั้งค่าสภาพแวดล้อม Python
การตั้งค่าสภาพแวดล้อม Python
การตั้งค่าสภาพแวดล้อม Python
การตั้งค่าสภาพแวดล้อม Python

การติดตั้งไพทอน:

ก่อนอื่นเราต้องมี Python 2.7 และรันอยู่ก่อน หากต้องการทำสิ่งนี้ให้ดาวน์โหลดและติดตั้ง python 2.7.14 ก่อน ตรวจสอบว่าติดตั้งถูกต้องหรือไม่ ไปที่: Windows Search >> พิมพ์ "IDLE" >> กด Enter Python Shell ควรปรากฏขึ้น

หรือ

ในการค้นหาให้พิมพ์ 'CMD' แล้วกด Enter เพื่อเปิด Command Prompt ในประเภท CMD >> python และกด Enter ส่วนต่อประสาน Python ควรแสดงไฟล์.

หากคุณเห็นข้อผิดพลาดใน CMD อย่าตกใจ คุณอาจต้องตั้งค่าตัวแปรสภาพแวดล้อม คุณสามารถทำตามบทช่วยสอนนี้ได้ที่นี่เพื่อตั้งค่าตัวแปรสภาพแวดล้อม

การติดตั้ง 'pyserial', 'OpenCV" และ "numpy" ใน python:

ในการติดตั้งโมดูลเหล่านี้ เราจะใช้ pip install

ขั้นแรกให้เปิด CMD แล้วพิมพ์รหัสต่อไปนี้:-

pip ติดตั้งซีเรียล

pip ติดตั้ง opencv-python >pip ติดตั้ง numpy

คำสั่งเหล่านี้จะติดตั้งโมดูลที่จำเป็น ตอนนี้เราสามารถย้ายไปที่ส่วนการเข้ารหัส…

ขั้นตอนที่ 3: สคริปต์ Python:

สคริปต์หลาม
สคริปต์หลาม

ก่อนเริ่มเขียนโค้ด สิ่งแรกที่ต้องทำคือสร้างโฟลเดอร์ใหม่ เนื่องจากโค้ดทั้งหมดต้องเก็บไว้ในโฟลเดอร์เดียวกัน ดังนั้นให้สร้างโฟลเดอร์ใหม่ ตั้งชื่ออะไรก็ได้ที่คุณต้องการ และดาวน์โหลด 'Haarcascade' จากด้านล่างแล้ววางลงในโฟลเดอร์

ตอนนี้เปิดแผ่นจดบันทึกและเขียนสคริปต์ด้านล่าง บันทึกเป็น 'face.py' ในโฟลเดอร์เดียวกับ haarcascade (คุณสามารถดาวน์โหลดรหัสที่ฉันให้ไว้ในไฟล์ด้านล่าง):

#import โมดูลที่จำเป็นทั้งหมด

นำเข้า numpy เป็น np นำเข้าเวลานำเข้าอนุกรม นำเข้า sys นำเข้า cv2 #Setup เส้นทางการสื่อสารสำหรับ Arduino (แทนที่ 'COM5' ให้ใส่พอร์ตที่ Arduino ของคุณเชื่อมต่ออยู่) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print("เชื่อมต่อกับ arduino…") #importing the Haarcascade for face detection face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml') #ในการจับภาพสตรีมวิดีโอจากเว็บแคม cap = cv2. VideoCapture(0) #Read the capture, แปลงเป็นภาพสีเทาและค้นหาใบหน้าในขณะที่ 1: ret, img = cap.read() cv2.resizeWindow('img', 500, 500) cv2.line(img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line(img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle(img, (250, 250), 5, (255, 255, 255), -1) gray = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3) # ตรวจจับใบหน้าและสร้างสี่เหลี่ยมรอบๆ สำหรับ (x, y, w, h) ในหน้า: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = grey[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] arr = {y:y+h, x:x+w} พิมพ์ (arr) พิมพ์ ('X:' +str(x)) พิมพ์ ('Y:'+str(y)) พิมพ์ ('x+w:' +str(x+w)) พิมพ์ ('y+h:' +str(y+h))) # ศูนย์กลางของ roi (สี่เหลี่ยมผืนผ้า) xx = int(x+(x+h))/2 yy = int(y+(y+w))/2 พิมพ์ (xx) พิมพ์ (yy) center = (xx, yy) # กำลังส่งข้อมูลไปยังการพิมพ์ Arduino ("ศูนย์กลางของสี่เหลี่ยมผืนผ้าคือ:", ศูนย์) data = "X{0:d}Y{1:d}Z".format(xx, yy) พิมพ์ ("output = '" +data+ "'") arduino.write (ข้อมูล) #แสดงสตรีม cv2.imshow('img', img) #กด 'Esc' เพื่อยุติการดำเนินการ k = cv2.waitKey(30) & 0xff ถ้า k == 27: แตก

เมื่อเสร็จแล้ว ให้ไปเขียนโค้ดสำหรับ Arduino…

ขั้นตอนที่ 4: รหัส Arduino:

รหัส Arduino
รหัส Arduino

หลังจากที่สคริปต์ python พร้อมแล้ว เราจำเป็นต้องมี Arduino Sketch เพื่อควบคุมเซอร์โว อ้างอิงโค้ดด้านล่าง วางลงใน Arduino IDE และบันทึกเป็น 'servo.ino' ในโฟลเดอร์เดียวกับ face.py และ haarcascade อัปโหลดรหัสและไปยังขั้นตอนถัดไปเพื่อสร้างการเชื่อมต่อ

(ไฟล์ดาวน์โหลดด้านล่าง)

#รวม

เซอร์โวเซอร์โวเวอร์; // เซอร์โวเซอร์โวแนวตั้ง เซอร์โวเซอร์โวHor; // เซอร์โวแนวนอน int x; int y; int ก่อนหน้า X; int ก่อนหน้า; การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); servoVer.attach(5); //แนบเซอร์โวแนวตั้งกับขา 5 servoHor.attach(6); //แนบเซอร์โวแนวนอนกับขา 6 servoVer.write (90); servoHor.write(90); } เป็นโมฆะ Pos() { if(prevX != x || prevY != y) { int servoX = map (x, 600, 0, 70, 179); int servoY = แผนที่ (y, 450, 0, 179, 95); servoX = นาที (servoX, 179); servoX = สูงสุด (servoX, 70); servoY = นาที (เซอร์โว Y, 179); servoY = สูงสุด (เซอร์โว Y, 95); servoHor.write(เซอร์โวX); servoVer.write(เซอร์โวY); } } โมฆะลูป () { if (Serial.available () > 0) { if (Serial.read () == 'X') { x = Serial.parseInt (); ถ้า (Serial.read () == 'Y') { y = Serial.parseInt (); ตำแหน่ง(); } } while(Serial.available() > 0) { Serial.read(); } } }

ขั้นตอนที่ 5: กลไกแพนเอียง:-

กลไกการแพนเอียง
กลไกการแพนเอียง
กลไกการแพนเอียง
กลไกการแพนเอียง

ฉันได้ใช้ชุดเครื่องมือ Pan-Tilt ที่มีจำหน่ายทั่วไป หากคุณต้องการ คุณสามารถสร้างมันขึ้นมาเองโดยใช้ไม้/พลาสติก หรือแม้แต่การพิมพ์ 3 มิติ

ตัวที่ผมเคยใช้ราคาถูกมาก ประกอบง่ายมาก แต่ถ้าคุณต้องการคำแนะนำเกี่ยวกับวิธีการทำเช่นนั้น คุณสามารถหาได้ที่นี่

ขั้นตอนที่ 6: การสร้างการเชื่อมต่อ:

การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ
การเชื่อมต่อ

วงจรค่อนข้างง่าย เพียงแนบเซอร์โวสองตัวเข้ากับ Arduino

  1. แนวตั้งเพื่อปักหมุด5
  2. แนวนอนเพื่อปักหมุด6
  3. กำลังไฟถึง +5V
  4. กราวด์ไปที่ GND

ตรวจสอบแผนภาพวงจรสำหรับการอ้างอิง

ขั้นตอนที่ 7: การทดสอบ:

  • หลังจากทำทุกอย่างเสร็จแล้ว สิ่งที่ต้องทำคือทดสอบว่าใช้งานได้หรือไม่ ในการทดสอบก่อนอื่นตรวจสอบให้แน่ใจว่าเซอร์โวเชื่อมต่อกับ Arduino อย่างถูกต้องและอัปโหลดภาพร่างแล้ว
  • หลังจากอัปโหลดภาพร่างแล้ว ตรวจสอบให้แน่ใจว่าได้ปิด IDE เพื่อให้พอร์ตเชื่อมต่อกับ python ได้ฟรี
  • ตอนนี้เปิด 'face.py' ด้วย Python IDLE แล้วกด 'F5' เพื่อเรียกใช้โค้ด จะใช้เวลาสองสามวินาทีในการเชื่อมต่อกับ Arduino จากนั้นคุณจะสามารถเห็นหน้าต่างที่สตรีมเว็บแคมได้ ตอนนี้รหัสจะตรวจจับใบหน้าของคุณและเซอร์โวจะติดตามมัน
  • Servo ควรเคลื่อนที่เมื่อคุณย้ายวัตถุ ตอนนี้เพียงแค่ติดกล้องเข้ากับเซอร์โวเพื่อให้มันเคลื่อนที่ไปพร้อมกับเซอร์โว

ขอขอบคุณ.

แนะนำ: