Mục lục:
- Quân nhu
- Bước 1: Cài đặt Python và OpenCV
- Bước 2: Các tính năng giống Haar là gì?
- Bước 3: Viết mã bằng Python
- Bước 4: Lập trình Arduino
- Bước 5: Kết luận
Video: Thiết bị theo dõi khuôn mặt! Python & Arduino: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Bởi Techovator0819 Kênh Youtube của tôi Theo dõi Thêm của tác giả:
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:
Theo dõi & theo dõi các cửa hàng nhỏ: 9 bước (có hình ảnh)
Theo dõi & theo dõi cho các cửa hàng nhỏ: Đây là một hệ thống dành cho các cửa hàng nhỏ được cho là gắn vào xe đạp điện hoặc xe tay ga điện tử để giao hàng trong phạm vi ngắn, ví dụ như một tiệm bánh muốn giao bánh ngọt. Theo dõi và theo dõi nghĩa là gì? Theo dõi và theo dõi là một hệ thống được sử dụng bởi ca
Theo dõi khuôn mặt và phát hiện nụ cười Robot Halloween: 8 bước (có hình ảnh)
Theo dõi khuôn mặt và phát hiện nụ cười Robot Halloween: Halloween đang đến gần! Chúng tôi quyết định xây dựng một thứ gì đó thật tuyệt. Gặp gỡ người máy Ghosty và Skully. Họ có thể nhìn theo khuôn mặt của bạn và họ biết khi nào bạn đang cười để cười với bạn! Dự án này là một ví dụ khác về việc sử dụng Ứng dụng iRobbie để chuyển đổi iPhone int
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 - Theo dõi nhiệt độ độ ẩm & chỉ số nhiệt trên M5stick-C với DHT11: 6 bước
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 | Theo dõi nhiệt độ độ ẩm và chỉ số nhiệt trên M5stick-C Với DHT11: Xin chào các bạn, trong phần hướng dẫn này, chúng ta sẽ học cách giao tiếp cảm biến nhiệt độ DHT11 với m5stick-C (một bảng phát triển của m5stack) và hiển thị nó trên màn hình của m5stick-C. Vì vậy, trong hướng dẫn này, chúng ta sẽ đọc nhiệt độ, độ ẩm & nhiệt tôi
Súng theo dõi khuôn mặt: 4 bước
Súng theo dõi khuôn mặt: Dự án này là một bản mở rộng từ dự án súng bắn tia laser được hiển thị tại đây - https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? CÁC BẢNG HIỆU CHỈNH Sự khác biệt duy nhất là súng sẽ không được kích hoạt bằng tia laser mà bằng
Robot ăn xin với tính năng theo dõi và điều khiển khuôn mặt bằng bộ điều khiển Xbox - Arduino: 9 bước (có hình ảnh)
Robot ăn xin với tính năng theo dõi và điều khiển khuôn mặt bằng bộ điều khiển Xbox - Arduino: Chúng tôi sẽ tạo ra một robot ăn xin. Robot này sẽ cố gắng chọc tức hoặc thu hút sự chú ý của những người đi qua. Nó sẽ phát hiện khuôn mặt của họ và cố gắng bắn tia laze vào họ. Nếu bạn cho robot một đồng xu, nó sẽ hát một bài hát và nhảy. Robot sẽ cần một