สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: การติดตั้ง Python และ OpenCV
- ขั้นตอนที่ 2: คุณลักษณะคล้าย Haar คืออะไร
- ขั้นตอนที่ 3: การเข้ารหัสใน Python
- ขั้นตอนที่ 4: การเขียนโปรแกรม Arduino
- ขั้นตอนที่ 5: บทสรุป
วีดีโอ: เครื่องติดตามใบหน้า! Python & Arduino: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
โดย Techovator0819ช่อง Youtube ของฉันติดตามเพิ่มเติมโดยผู้เขียน:
About ฉันชอบทำอะไรใหม่ๆ เช่นเดียวกับเรื่องที่เกี่ยวข้องกับไมโครคอนโทรลเลอร์ วิศวกรรมเครื่องกล ปัญญาประดิษฐ์ วิทยาการคอมพิวเตอร์ และอะไรก็ตามที่ฉันสนใจ และที่นี่คุณจะพบกับ… More About Techovator0819 »
สวัสดีทุกคนที่อ่านคำแนะนำนี้ นี่คืออุปกรณ์ติดตามใบหน้าที่ทำงานบนไลบรารีหลามที่เรียกว่า OpenCV CV ย่อมาจาก 'Computer Vision' จากนั้นฉันก็ตั้งค่าอินเทอร์เฟซแบบอนุกรมระหว่างพีซีและ Arduino UNO ของฉัน นั่นหมายความว่าสิ่งนี้ใช้ไม่ได้กับ Python เท่านั้น
อุปกรณ์นี้จดจำใบหน้าของคุณในเฟรม จากนั้นจะส่งคำสั่งบางอย่างไปยัง Arduino เพื่อจัดตำแหน่งกล้องให้อยู่ในเฟรม! ฟังดูดีนะ? ลองกระโดดลงไปแล้ว
เสบียง
1. Arduino UNO
2. 2 x เซอร์โวมอเตอร์ (เซอร์โวมอเตอร์ตัวไหนก็ได้ แต่ฉันใช้ Tower Pro SG90)
3. การติดตั้ง Python
4. การติดตั้ง OpenCV
5. กล้องเว็บ
ขั้นตอนที่ 1: การติดตั้ง Python และ OpenCV
การติดตั้ง Python ค่อนข้างตรงไปตรงมา!
www.python.org/downloads/
คุณสามารถไปตามลิงก์ด้านบนเพื่อดาวน์โหลดเวอร์ชันหลาม (Mac, windows หรือ Linux) ที่เหมาะสมกับคุณที่สุด (64 บิตหรือ 32 บิต) ขั้นตอนการติดตั้งที่เหลือนั้นเรียบง่าย และอินเทอร์เฟซจะแนะนำคุณ
เมื่อคุณติดตั้งเสร็จแล้ว ให้เปิดพรอมต์คำสั่งและพิมพ์ข้อความต่อไปนี้:
pip ติดตั้ง opencv-python
ที่ควรติดตั้งไลบรารี openCV ในกรณีที่เกิดปัญหา คุณสามารถตรวจสอบหน้านี้
หลังจากตั้งค่า Environment และข้อกำหนดเบื้องต้นทั้งหมดแล้ว มาดูกันว่าเราจะสร้างสิ่งนี้ได้อย่างไร!
ขั้นตอนที่ 2: คุณลักษณะคล้าย Haar คืออะไร
คุณสมบัติคล้าย Haar คือคุณสมบัติของภาพดิจิทัล ชื่อนี้มาจากเวฟเล็ต Haar เหล่านี้เป็นตระกูลของคลื่นรูปสี่เหลี่ยมจัตุรัสซึ่งใช้ระบุคุณสมบัติในภาพดิจิทัล น้ำตก Haar นั้นโดยทั่วไปแล้วเป็นตัวแยกประเภทซึ่งช่วยให้เราตรวจจับวัตถุ (ในกรณีของเราใบหน้า) โดยใช้คุณสมบัติคล้าย Haar
ในกรณีของเรา เพื่อความเรียบง่าย เราจะใช้ Haar Cascades ที่ผ่านการฝึกอบรมมาล่วงหน้าเพื่อระบุใบหน้า คุณสามารถไปตามลิงก์นี้ของหน้า GitHub และดาวน์โหลดไฟล์ xml สำหรับ Haar Cascade
1. คลิกที่ 'haarcascade_frontalface_alt.xml'
2. คลิกที่ปุ่ม 'ดิบ' ที่ส่วนบนขวาของหน้าต่างรหัส
3. จะนำคุณไปยังหน้าอื่นที่มีเฉพาะข้อความเท่านั้น
4. คลิกขวาแล้วกด 'บันทึกเป็น..'
5. บันทึกไว้ในไดเร็กทอรีหรือโฟลเดอร์เดียวกันกับโค้ดหลามที่คุณกำลังจะเขียน
ขั้นตอนที่ 3: การเข้ารหัสใน Python
นำเข้า cv2
นำเข้า numpy เป็น np นำเข้าเวลานำเข้าแบบอนุกรม
เรานำเข้าไลบรารีทั้งหมดที่เราต้องการ
ard = serial. Serial("COM3", 9600)
เราสร้างวัตถุอนุกรมที่เรียกว่า 'ard' นอกจากนี้เรายังระบุชื่อพอร์ตและ BaudRate เป็นพารามิเตอร์
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
เราสร้างวัตถุอื่นสำหรับ Haar Cascade ของเรา ตรวจสอบให้แน่ใจว่าไฟล์ HaarCascade ยังคงอยู่ในโฟลเดอร์เดียวกับโปรแกรมหลามนี้
vid = cv2. VideoCapture(0)
เราสร้างวัตถุเพื่อจับภาพวิดีโอจากเว็บแคม 0 เนื่องจากพารามิเตอร์หมายถึงเว็บแคมตัวแรกที่เชื่อมต่อกับพีซีของฉัน
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
ในขณะที่จริง:
_, frame = vid.read()#reads เฟรมปัจจุบันไปยังตัวแปร frame grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY)#converts frame -> ภาพระดับสีเทา #บรรทัดต่อไปนี้ตรวจจับใบหน้า #พารามิเตอร์แรกคือรูปภาพที่คุณต้องการตรวจจับใน #minSize=() ระบุขนาดต่ำสุดของใบหน้าในรูปของพิกเซล #คลิกลิงก์ด้านบนเพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับใบหน้าการจำแนก Cascade = face_cascade.detectMultiScale(สีเทา, minSize =(80, 80), minNeighbors=3) #A สำหรับการวนซ้ำเพื่อตรวจจับใบหน้า สำหรับ (x, y, w, h) ในหน้า: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)#draws a Rectangle around ใบหน้า Xpos = x+(w/2)#คำนวณพิกัด X ของจุดศูนย์กลางของใบหน้า Ypos = y+(h/2)#คำนวณพิกัด Y ของกึ่งกลางใบหน้าถ้า Xpos > 280: #โค้ดต่อไปนี้จะตรวจสอบว่าใบหน้าเป็น ard.write('L'.encode()) #on ซ้าย ขวา บนหรือล่าง เทียบกับ time.sleep(0.01) #center ของเฟรม elif Xpos 280: ard.write('D'.encode()) time.sleep(0.01) elif Ypos < 200: ard.write('U'.encode()) time.sleep(0.01) อื่น: ard.write ('S'.encode()) time.sleep(0.01) แตก cv2.imshow('frame', frame)#แสดงเฟรมในหน้าต่างแยก k = cv2.waitKey(1)&0xFF if(k == ord('q')): #if 'q' ถูกกดบนคีย์บอร์ด มันจะออกจากลูป while หยุดพัก
cv2.destroyAllWindows() #ปิดหน้าต่างทั้งหมด
ard.close() #ปิดการสื่อสารแบบอนุกรม
vid.release() #หยุดรับวิดีโอจากเว็บแคม
ขั้นตอนที่ 4: การเขียนโปรแกรม Arduino
ปรับเปลี่ยนโปรแกรมตามการตั้งค่าฮาร์ดแวร์ของคุณได้ตามต้องการ
#รวม
เซอร์โวเซอร์โวเอ็กซ์;
เซอร์โวเซอร์โวY;
int x = 90;
int y = 90;
การตั้งค่าเป็นโมฆะ () {
// ใส่รหัสการตั้งค่าของคุณที่นี่ เพื่อเรียกใช้ครั้งเดียว: Serial.begin(9600); servoX.attach(9); servoY.attach(10); servoX.write(x); servoY.write (y); ล่าช้า (1000); }
ใส่ถ่าน = ""; //อินพุตแบบอนุกรมถูกเก็บไว้ในตัวแปรนี้
วงเป็นโมฆะ () {
// ใส่รหัสหลักของคุณที่นี่ เพื่อเรียกใช้ซ้ำ: if(Serial.available()){ //ตรวจสอบว่าข้อมูลใดอยู่ในอินพุตบัฟเฟอร์อนุกรม = Serial.read(); // อ่านข้อมูลลงในตัวแปร if(input == 'U'){ servoY.write(y+1); //ปรับมุมเซอร์โวตามอินพุต y += 1; //อัปเดตค่าของมุม } else if(input == 'D'){ servoY.write(y-1); y -= 1; } อื่น ๆ { servoY.write (y); } ถ้า (อินพุต == 'L') { servoX.write (x-1); x -= 1; } อื่น ๆ if(input == 'R'){ servoX.write(x+1); x += 1; } อื่น ๆ { servoX.write (x); } อินพุต = ""; // ล้างตัวแปร } // กระบวนการทำซ้ำอย่างต่อเนื่อง !!:) }
ขั้นตอนที่ 5: บทสรุป
นี่เป็นวิธีที่ดีและเป็นแบบโต้ตอบซึ่งคุณสามารถออกแบบให้รวม Computer Vision ไว้ในโครงการ Arduino ของคุณ Computer Vision ค่อนข้างสนุก และฉันหวังว่าพวกคุณจะชอบมันจริงๆ ถ้าใช่แจ้งให้เราทราบในความคิดเห็น และโปรดสมัครรับข้อมูลจากช่อง youtube ของฉัน ขอบคุณล่วงหน้า <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
แนะนำ:
Python Introduction - Katsuhiko Matsuda & Edwin Cijo - พื้นฐาน: 7 ขั้นตอน
Python Introduction - Katsuhiko Matsuda & Edwin Cijo - Basics: สวัสดี เราเป็นนักเรียน 2 คนใน MYP 2 เราต้องการสอนพื้นฐานของการเขียนโค้ด Python แก่คุณ ซึ่งสร้างขึ้นในช่วงปลายทศวรรษ 1980 โดย Guido van Rossum ในเนเธอร์แลนด์ มันถูกสร้างขึ้นมาเป็นตัวตายตัวแทนของภาษาเอบีซี ชื่อของมันคือ "Python" เพราะเมื่อ
Raspberry Pi SHT25 Humidity & Temperature Sensor Python Tutorial: 4 ขั้นตอน
Raspberry Pi SHT25 Humidity & Temperature Sensor Python Tutorial: SHT25 I2C Humidity and Temperature Sensor ±1.8%RH ±0.2°C I2C Mini Module. เซ็นเซอร์ความชื้นและอุณหภูมิความแม่นยำสูง SHT25 ได้กลายเป็นมาตรฐานอุตสาหกรรมในแง่ของฟอร์มแฟกเตอร์และความชาญฉลาด โดยให้สัญญาณเซ็นเซอร์แบบลิเนียร์ที่ปรับเทียบแล้ว
เห็นภาพกำไรและขาดทุนของ Bitcoin ด้วย Arduino & Python: 6 ขั้นตอน
เห็นภาพการได้รับและการสูญเสีย Bitcoin ของคุณด้วย Arduino & Python: แนวคิดพื้นฐานโดยส่วนตัวแล้วฉันเป็นนักลงทุนสกุลเงินเข้ารหัสลับ แต่ฉันก็มีงานหนักที่ต้องทำ ดังนั้นฉันจึงไม่สามารถติดตามราคา bitcoin ได้ 10 ครั้งต่อนาที อย่างไรก็ตาม ฉันยังต้องการทราบว่าฉันมีรายได้หรือขาดทุน ดังนั้น,
อีกหนึ่งสถานีตรวจอากาศ Arduino (ESP-01 & BMP280 & DHT11 & OneWire): 4 ขั้นตอน
สถานีตรวจอากาศ Arduino อีกหนึ่งสถานี (ESP-01 & BMP280 & DHT11 & OneWire): ที่นี่คุณสามารถค้นหาการวนซ้ำของการใช้ OneWire ด้วยหมุด ESP-01 เพียงไม่กี่ตัว อุปกรณ์ที่สร้างขึ้นในคำสั่งนี้เชื่อมต่อกับเครือข่าย Wifi ของคุณ ตัวเลือก (คุณต้องมีข้อมูลประจำตัว…) รวบรวมข้อมูลทางประสาทสัมผัสจาก BMP280 และ DHT11
หุ่นยนต์ Arduino ควบคุมด้วยเสียง + กล้อง Wifi + กริปเปอร์ + แอพ & การใช้งานด้วยตนเอง & โหมดหลีกเลี่ยงอุปสรรค (KureBas Ver 2.0): 4 ขั้นตอน
หุ่นยนต์ Arduino ควบคุมด้วยเสียง + กล้อง Wifi + กริปเปอร์ + แอพ & การใช้งานด้วยตนเอง & โหมดหลีกเลี่ยงอุปสรรค (KureBas Ver 2.0): KUREBAS V2.0 กลับมาแล้ว เขาประทับใจมากกับคุณสมบัติใหม่ เขามีกริปเปอร์ กล้อง Wifi และแอปพลิเคชั่นใหม่ที่ผลิตขึ้นเพื่อเขา