Mục lục:

Thiết bị theo dõi khuôn mặt! Python & Arduino: 5 bước
Thiết bị theo dõi khuôn mặt! Python & Arduino: 5 bước

Video: Thiết bị theo dõi khuôn mặt! Python & Arduino: 5 bước

Video: Thiết bị theo dõi khuôn mặt! Python & Arduino: 5 bước
Video: [PYTHON - ARDUINO] Bài 2: Truyền dữ liệu từ Arduino lên Python để hiển thị 2024, Tháng bảy
Anonim
Image
Image
Thiết bị theo dõi khuôn mặt! Python & Arduino
Thiết bị theo dõi khuôn mặt! Python & Arduino
Thiết bị theo dõi khuôn mặt! Python & Arduino
Thiết bị theo dõi khuôn mặt! Python & Arduino

Bởi Techovator0819 Kênh Youtube của tôi Theo dõi Thêm của tác giả:

IoT: Hộp thời tiết (với Báo thức & Bộ hẹn giờ tùy chỉnh)
IoT: Hộp thời tiết (với Báo thức & Bộ hẹn giờ tùy chỉnh)
IoT: Hộp thời tiết (với Báo thức & Bộ hẹn giờ tùy chỉnh)
IoT: Hộp thời tiết (với Báo thức & Bộ hẹn giờ tùy chỉnh)
Robot tự hành đa chức năng: 'Tài sản'
Robot tự hành đa chức năng: 'Tài sản'
Robot tự hành đa chức năng: 'Tài sản'
Robot tự hành đa chức năng: 'Tài sản'

Về: Tôi chỉ thích làm những điều mới. Như những thứ liên quan đến bộ điều khiển vi mô, kỹ thuật cơ khí, Trí tuệ nhân tạo, Khoa học máy tính và bất cứ thứ gì khiến tôi quan tâm. Và ở đây bạn sẽ tìm thấy tất cả… Thông tin thêm về Techovator0819 »

Xin chào tất cả mọi người đang đọc hướng dẫn này. Đây là một thiết bị theo dõi khuôn mặt hoạt động trên thư viện python được gọi là OpenCV. CV là viết tắt của 'Computer Vision'. Sau đó, tôi thiết lập giao diện nối tiếp giữa PC và Arduino UNO của mình. Vì vậy, điều đó có nghĩa là điều này không chỉ hoạt động trên Python.

Thiết bị này nhận dạng khuôn mặt của bạn trong khung hình, sau đó nó sẽ gửi một số lệnh nhất định đến Arduino để định vị máy ảnh sao cho nó nằm trong khung hình! Nghe hay đấy? Hãy bắt tay ngay vào nó.

Quân nhu

1. Arduino UNO

2. 2 x Động cơ Servo (Bất kỳ động cơ servo nào cũng được nhưng tôi đã sử dụng Tower Pro SG90)

3. Cài đặt Python

4. Cài đặt OpenCV

5. Web-Camera

Bước 1: Cài đặt Python và OpenCV

Việc cài đặt Python khá dễ dàng!

www.python.org/downloads/

Bạn có thể theo liên kết trên để tải xuống phiên bản python (Mac, windows hoặc Linux) phù hợp nhất với bạn (64 bit hoặc 32 bit). Phần còn lại của quá trình cài đặt rất đơn giản và bạn sẽ được hướng dẫn qua giao diện.

Sau khi bạn hoàn tất quá trình cài đặt, hãy mở dấu nhắc lệnh của bạn và nhập như sau:

pip cài đặt opencv-python

Điều đó sẽ cài đặt thư viện openCV. Trong trường hợp gặp sự cố khi chụp, bạn có thể xem trang NÀY.

Sau khi đã thiết lập Môi trường và tất cả các điều kiện tiên quyết, hãy xem chúng ta có thể thực sự xây dựng điều này như thế nào!

Bước 2: Các tính năng giống Haar là gì?

Các tính năng giống như Haar là các tính năng của một hình ảnh kỹ thuật số. Tên bắt nguồn từ Haar wavelets. Đây là họ các sóng hình vuông được sử dụng để xác định các đặc điểm trong hình ảnh kỹ thuật số. Haar cascades về cơ bản là một bộ phân loại giúp chúng ta phát hiện các đối tượng (trong trường hợp của chúng ta là khuôn mặt) bằng cách sử dụng các tính năng giống như haar.

Trong trường hợp của chúng tôi, để đơn giản hơn, chúng tôi sẽ sử dụng Haar Cascades được đào tạo trước để xác định khuôn mặt. Bạn có thể theo liên kết NÀY của trang github và tải xuống tệp xml cho Haar Cascade.

1. Nhấp vào 'haarcascade_frontalface_alt.xml'

2. Nhấp vào nút 'Raw' ở phần trên cùng bên phải của cửa sổ mã.

3. Nó sẽ hướng bạn đến một trang khác chỉ có văn bản.

4. Nhấp chuột phải và nhấn 'Lưu dưới dạng..'

5. Lưu nó trong cùng một thư mục hoặc thư mục với mã python mà bạn định ghi.

Bước 3: Viết mã bằng Python

nhập cv2

import numpy as np import serial time import

Chúng tôi nhập tất cả các thư viện mà chúng tôi cần.

ard = serial. Serial ("COM3", 9600)

Chúng tôi tạo một đối tượng nối tiếp có tên là 'ard'. Chúng tôi cũng chỉ định Tên cổng và BaudRate làm tham số.

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

Chúng tôi tạo một đối tượng khác cho Haar Cascade của chúng tôi. Đảm bảo rằng tệp HaarCascade vẫn nằm trong cùng một thư mục với chương trình python này.

vid = cv2. VideoCapture (0)

Chúng tôi tạo một đối tượng để quay video từ webcam. 0 là tham số có nghĩa là web cam đầu tiên được kết nối với PC của tôi.

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

trong khi Đúng:

_, frame = vid.read () # đọc khung hiện tại thành khung biến xám = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) #converts frame -> hình ảnh đã quét màu xám # dòng sau phát hiện khuôn mặt. # Tham số đầu tiên là hình ảnh mà bạn muốn phát hiện trên # minSize = () chỉ định kích thước tối thiểu của khuôn mặt tính theo pixel # Nhấp vào liên kết trên để biết thêm về Phân loại tầng các khuôn mặt = face_cascade.detectMultiScale (xám, minSize = (80, 80), minNeighbors = 3) #A cho vòng lặp để phát hiện các khuôn mặt. cho (x, y, w, h) trong các mặt: cv2.rectangle (frame, (x, y), (x + w, y + h), (255, 0, 0), 2) # rút một hình chữ nhật xung quanh mặt Xpos = x + (w / 2) # tính tọa độ X của tâm mặt. Ypos = y + (h / 2) #calcualtes tọa độ Y của tâm khuôn mặt nếu Xpos> 280: # Các khối mã sau kiểm tra xem khuôn mặt có phải là ard.write ('L'.encode ()) #on trái, phải, trên cùng hoặc dưới cùng so với time.sleep (0,01) # trung tâm của khung. 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'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame) # hiển thị khung trong một cửa sổ riêng biệt. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #if 'q' được nhấn trên bàn phím, nó sẽ thoát khỏi vòng lặp while. nghỉ

cv2.destroyAllWindows () # đóng tất cả các cửa sổ

ard.close () # đóng giao tiếp nối tiếp

vid.release () # dừng nhận video từ web cam.

Bước 4: Lập trình Arduino

Vui lòng sửa đổi chương trình theo thiết lập phần cứng phù hợp với nhu cầu của bạn.

#bao gồm

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

void setup () {

// đặt mã thiết lập của bạn ở đây, để chạy một lần: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); chậm trễ (1000); }

char đầu vào = ""; // đầu vào nối tiếp được lưu trữ trong biến này

void loop () {

// đặt mã chính của bạn ở đây, để chạy lặp lại: if (Serial.available ()) {// kiểm tra xem có dữ liệu nào nằm trong bộ đệm nối tiếp input = Serial.read (); // đọc dữ liệu vào một biến if (input == 'U') {servoY.write (y + 1); // điều chỉnh góc servo theo đầu vào y + = 1; // cập nhật giá trị của góc} else if (input == 'D') {servoY.write (y-1); y - = 1; } else {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x - = 1; } else if (input == 'R') {servoX.write (x + 1); x + = 1; } else {servoX.write (x); } input = ""; // xóa biến} // tiến trình cứ lặp lại !!:)}

Bước 5: Kết luận

Đây là một cách hay và là một cách tương tác mà qua đó bạn có thể thiết kế kết hợp Computer Vision trong các dự án Arduino của mình. Computer Vision thực sự khá thú vị. Và tôi thực sự hy vọng rằng các bạn đã thích nó. Nếu có, hãy cho tôi biết trong phần bình luận. Và hãy đăng ký kênh youtube của tôi. Cảm ơn trước <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Đề xuất: