Mục lục:

THEO DÕI MẶT BẰNG ARDUINO !!!: 7 bước
THEO DÕI MẶT BẰNG ARDUINO !!!: 7 bước

Video: THEO DÕI MẶT BẰNG ARDUINO !!!: 7 bước

Video: THEO DÕI MẶT BẰNG ARDUINO !!!: 7 bước
Video: Điều Khiển Led 7 Đoạn Bằng Arduino UNO R3 | Điện tử DAT 2024, Tháng bảy
Anonim
THEO DÕI FACE DÙNG ARDUINO !!!
THEO DÕI FACE DÙNG ARDUINO !!!

Trong một hướng dẫn trước, tôi đã chia sẻ cách bạn có thể giao tiếp giữa Arduino và Python bằng cách sử dụng mô-đun 'pyserial' và điều khiển đèn LED. Nếu bạn chưa xem, hãy xem tại đây: GIAO TIẾP GIỮA ARDUINO & PYTHON!

Và cách bạn có thể phát hiện màu sắc của một đối tượng và theo dõi nó trên màn hình, hãy xem điều đó tại đây: PHÁT HIỆN MÀU SẮC SỬ DỤNG OPENCV VÀ PYTHON.

Trong phần Có thể hướng dẫn này, tôi sẽ hướng dẫn bạn cách theo dõi khuôn mặt bằng Arduino & Python và làm cho Máy ảnh theo dõi khuôn mặt. Điều này nghe có vẻ khó nhưng hãy tin tôi không phải vậy, Tất cả những gì bạn cần là kiến thức cơ bản về Arduino và Python.

Vậy hãy bắt đầu…

Bước 1: Những thứ bạn sẽ cần:

Những thứ bạn sẽ cần
Những thứ bạn sẽ cần
Những thứ bạn sẽ cần
Những thứ bạn sẽ cần
Những thứ bạn sẽ cần
Những thứ bạn sẽ cần

Các yêu cầu là tối thiểu. Ở đây tôi đã cung cấp một phần danh sách mọi thứ bạn cần:

Yêu cầu phần cứng:

  • Arduino UNO (Amazon US / Amazon EU)
  • Web Cam (Amazon US / Amazon EU)
  • Servos x 2 (Amazon US / Amazon EU)
  • Breadboard (Amazon US / Amazon EU)
  • Servo Pan Tilt Kit (Amazon US / Amazon EU)

Yêu cầu phần mềm:

  1. Python 2.7 (Nên cài đặt, hệ điều hành Linux thường được cài đặt sẵn)
  2. OpenCV (Bạn có thể tải xuống riêng hoặc cài đặt bằng cách sử dụng 'pip install'. Giải thích thêm)
  3. pyserial (Có thể được cài đặt bằng pip)
  4. numpy.
  5. Haarcascade.

Sau khi mọi thứ được thu thập, chúng ta có thể chuyển sang Bước Cài đặt…

Bước 2: Thiết lập môi trường Python:

Thiết lập môi trường Python
Thiết lập môi trường Python
Thiết lập môi trường Python
Thiết lập môi trường Python
Thiết lập môi trường Python
Thiết lập môi trường Python

Cài đặt Python:

Vì vậy, trước tiên chúng ta cần Python 2.7 thiết lập và chạy. Để thực hiện việc này, đầu tiên hãy tải xuống và cài đặt python 2.7.14. Để kiểm tra xem nó đã được cài đặt đúng chưa, Goto: Windows Search >> Gõ "IDLE" >> Nhấn Enter. Một Python Shell sẽ bật lên.

HOẶC

Trong tìm kiếm, nhập 'CMD' và nhấn enter để mở Command Prompt. Trong CMD gõ >> python và nhấn enter, giao diện Python sẽ hiển thị.

Nếu bạn thấy lỗi trong CMD, Đừng lo lắng, bạn có thể cần đặt biến môi trường. Bạn có thể làm theo hướng dẫn này Tại đây để thiết lập Biến môi trường.

Cài đặt 'pyserial', 'OpenCV "và" numpy "trong python:

Để cài đặt các mô-đun này, chúng tôi sẽ sử dụng cài đặt pip, Trước tiên hãy mở CMD và nhập các mã sau: -

pip cài đặt nối tiếp

pip cài đặt opencv-python> pip cài đặt numpy

các lệnh này sẽ cài đặt các mô-đun cần thiết. Bây giờ chúng ta có thể chuyển sang phần viết mã…

Bước 3: Tập lệnh Python:

Tập lệnh Python
Tập lệnh Python

Trước khi bắt đầu viết mã, điều đầu tiên cần làm là tạo một thư mục mới vì tất cả mã cần được lưu trữ trong cùng một thư mục. Vì vậy, hãy tạo một thư mục mới, đặt tên cho nó bất cứ thứ gì bạn muốn. và tải xuống 'Haarcascade' từ bên dưới và dán nó vào thư mục.

Bây giờ hãy mở notepad và viết tập lệnh được đưa ra bên dưới, Lưu nó dưới dạng 'face.py' trong cùng thư mục với haarcascade. (Bạn có thể tải xuống đoạn mã mà tôi đã cung cấp cho tệp bên dưới):

#import tất cả các mô-đun bắt buộc

import numpy as np import serial import time import sys import cv2 #Setup Đường dẫn giao tiếp cho arduino (Thay cho 'COM5' đặt cổng mà arduino của bạn được kết nối) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Đã kết nối với arduino…") # nhập Haarcascade để nhận diện khuôn mặt face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Để thu luồng video từ webcam. cap = cv2. VideoCapture (0) # Đọc hình ảnh đã chụp, chuyển nó thành hình ảnh Xám và tìm khuôn mặt trong khi 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) face = face_cascade.detectMultiScale (xám, 1.3) # phát hiện khuôn mặt và tạo một hình chữ nhật xung quanh nó. for (x, y, w, h) in the face: cv2.rectangle (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = gray [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] arr = {y: y + h, x: x + w} print (arr) print ('X: '+ str (x)) print (' Y: '+ str (y)) print (' x + w: '+ str (x + w)) print (' y + h: '+ str (y + h)) # Tâm roi (Hình chữ nhật) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 print (xx) print (yy) center = (xx, yy) # gửi dữ liệu tới arduino print ("Tâm của Hình chữ nhật là:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" + data + "'") arduino.write (dữ liệu) # Hiển thị luồng. cv2.imshow ('img', img) # Nhấn 'Esc' để chấm dứt thực thi k = cv2.waitKey (30) & 0xff if k == 27: break

Sau khi hoàn tất, hãy chuyển sang viết mã cho arduino…

Bước 4: Mã Arduino:

Mã Arduino
Mã Arduino

Sau khi tập lệnh python đã sẵn sàng, chúng ta cần phác thảo arduino để điều khiển servo. Tham khảo mã bên dưới, dán nó vào Arduino IDE và lưu nó dưới dạng 'servo.ino' trong cùng thư mục với face.py và haarcascade. tải lên mã và chuyển sang bước tiếp theo để tạo kết nối.

(Tệp có thể tải xuống được cung cấp bên dưới)

#bao gồm

Servo servoVer; // Dọc Servo Servo servoHor; // Servo ngang int x; int y; int presX; int trướcY; void setup () {Serial.begin (9600); servoVer.attach (5); // Gắn Servo dọc vào Pin 5 servoHor.attach (6); // Gắn Servo ngang vào Pin 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = map (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); servoY = max (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}

Bước 5: Cơ chế Pan-Tilt: -

Cơ chế Pan-Tilt:
Cơ chế Pan-Tilt:
Cơ chế Pan-Tilt:
Cơ chế Pan-Tilt:

Tôi đã sử dụng một bộ dụng cụ có sẵn cho Pan-Tilt. Nếu bạn muốn, bạn có thể tự làm một cái bằng gỗ / nhựa hoặc thậm chí in 3D.

Cái tôi đã sử dụng khá rẻ và rất dễ lắp ráp. Tuy nhiên, nếu bạn muốn hướng dẫn về cách làm điều đó, bạn có thể tìm thấy nó ở đây.

Bước 6: Tạo kết nối:

Tạo kết nối
Tạo kết nối
Tạo kết nối
Tạo kết nối

Mạch khá đơn giản. Chỉ cần gắn hai Servos vào arduino.

  1. Dọc đến Ghim 5
  2. Ngang đến chân 6
  3. Nguồn đến + 5V
  4. Mặt đất đến GND

Kiểm tra sơ đồ mạch để tham khảo.

Bước 7: KIỂM TRA:

  • Sau khi mọi thứ hoàn thành, việc cuối cùng cần làm là kiểm tra xem nó có hoạt động không. Để kiểm tra, trước tiên hãy đảm bảo rằng các servos được kết nối đúng cách với arduino và bản phác thảo được tải lên.
  • Sau khi bản phác thảo được tải lên, hãy đảm bảo đóng IDE để cổng có thể kết nối với python.
  • Bây giờ hãy mở 'face.py' bằng Python IDLE và nhấn 'F5' để chạy mã. Sẽ mất một vài giây để kết nối với arduino và sau đó bạn sẽ có thể thấy một cửa sổ phát trực tuyến web cam. Bây giờ mã sẽ phát hiện khuôn mặt của bạn và các servos sẽ theo dõi nó theo dõi nó.
  • Servo sẽ di chuyển khi bạn di chuyển đối tượng. Bây giờ chỉ cần gắn máy ảnh vào servos để nó sẽ di chuyển cùng với Servos.

Cảm ơn bạn.

Đề xuất: