Mục lục:
- Bước 1: Cài đặt Anaconda
- Bước 2: Tải xuống Gói CV Mở
- Bước 3: Đặt các biến môi trường
- Bước 4: Kiểm tra để xác nhận
- Bước 5: Tạo mã nhận diện khuôn mặt
- Bước 6: Tạo mã để tạo tập dữ liệu
- Bước 7: Tạo mã để đào tạo trình nhận dạng
- Bước 8: Tạo mã để nhận ra khuôn mặt và kết quả
Video: Nhận diện khuôn mặt + nhận dạng: 8 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:36
Đây là một ví dụ đơn giản về việc chạy tính năng nhận diện và nhận diện khuôn mặt với OpenCV từ máy ảnh. LƯU Ý: TÔI ĐÃ THỰC HIỆN DỰ ÁN NÀY CHO CUỘC THI CẢM BIẾN VÀ TÔI ĐÃ SỬ DỤNG CAMERA LÀM CẢM BIẾN ĐỂ THEO DÕI VÀ CÁC MẶT CẢNH NHẬN. Tạo mã để nhận diện khuôn mặt 6. Tạo mã để tạo tập dữ liệu 7. Tạo mã để huấn luyện bộ nhận dạng 8. Tạo mã để nhận dạng khuôn mặt & Kết quả.
Bước 1: Cài đặt Anaconda
Anaconda về cơ bản là một IDE Python được đóng gói độc đáo được vận chuyển với hàng tấn gói hữu ích, chẳng hạn như NumPy, Pandas, IPython Notebook, v.v. Nó dường như được khuyến khích ở khắp mọi nơi trong cộng đồng khoa học. Kiểm tra Anaconda để cài đặt nó.
Bước 2: Tải xuống Gói CV Mở
Trước tiên, hãy truy cập trang OpenCV chính thức để tải xuống gói OpenCV hoàn chỉnh. Chọn phiên bản bạn thích (2.x hoặc 3.x). Tôi đang sử dụng Python 2.x và OpenCV 2.x - chủ yếu là vì đây là cách các Hướng dẫn OpenCV-Python được thiết lập / dựa trên.
Trong trường hợp của tôi, tôi đã giải nén gói (về cơ bản là một thư mục) thẳng vào ổ F của mình. (F: / opencv).
Bước 3: Đặt các biến môi trường
Sao chép và dán tệp cv2.pyd
Thư mục Anaconda Site-pack (ví dụ: F: / Program Files / Anaconda2 / Lib / site-package trong trường hợp của tôi) chứa các gói Python mà bạn có thể nhập. Mục tiêu của chúng tôi là sao chép và dán tệp cv2.pyd vào thư mục này (để chúng tôi có thể sử dụng nhập cv2 trong mã Python của chúng tôi.).
Để thực hiện việc này, hãy sao chép tệp cv2.pyd…
Từ thư mục OpenCV này (phần đầu có thể hơi khác trên máy của bạn):
# Python 2.7 và máy 64 bit: F: / opencv / build / python / 2.7 / x64 # Python 2.7 và máy 32 bit: F: / opencv / build / python / 2.7 / x84
Đối với thư mục Anaconda này (phần đầu có thể hơi khác trên máy của bạn):
F: / Program Files / Anaconda2 / Lib / site-package
Sau khi thực hiện bước này, bây giờ chúng ta sẽ có thể sử dụng nhập cv2 bằng mã Python. NHƯNG, chúng tôi vẫn cần làm thêm một chút công việc để FFMPEG (codec video) hoạt động (cho phép chúng tôi thực hiện những việc như xử lý video.)
Nhấp chuột phải vào "Máy tính của tôi" (hoặc "PC này" trên Windows 8.1) -> nhấp chuột trái vào Thuộc tính -> nhấp chuột trái vào tab "Nâng cao" -> nhấp chuột trái vào nút "Biến môi trường…". Thêm một biến người dùng mới. để trỏ đến OpenCV (x86 cho hệ thống 32 bit hoặc x64 cho hệ thống 64 bit.) Tôi hiện đang sử dụng máy 64 bit.
32-bitOPENCV_DIRC: / opencv / build / x86 / vc12
64-bitOPENCV_DIRC: / opencv / build / x64 / vc12
Nối% OPENCV_DIR% / bin vào PATH biến người dùng.
Ví dụ: biến người dùng PATH của tôi trông như thế này…
Trước:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Sau:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;% OPENCV_DIR% / bin
Đây là nó, chúng tôi đã hoàn thành! FFMPEG đã sẵn sàng để sử dụng!
Bước 4: Kiểm tra để xác nhận
Chúng tôi cần kiểm tra xem liệu bây giờ chúng tôi có thể thực hiện những điều này trong Anaconda (thông qua Spyder IDE) hay không:
- Nhập gói OpenCV
- Sử dụng tiện ích FFMPEG (để đọc / ghi / xử lý video)
Kiểm tra 1: Chúng ta có thể nhập OpenCV không?
Tạm kết rằng Anaconda hiện có thể nhập gói OpenCV-Python (cụ thể là cv2), phát hành những điều này trong Bảng điều khiển IPython:
nhập cv2
in cv2._ phiên bản_
Nếu gói cv2 được nhập vào ok không có lỗi và phiên bản cv2 được in ra, thì tất cả chúng ta đều tốt!
Kiểm tra 2: Chúng ta có thể sử dụng codec FFMPEG không?
Đặt một mẫu
input_video.mp4
tệp video trong một thư mục. Chúng tôi muốn kiểm tra xem chúng tôi có thể:
- đọc tệp video.mp4 này và
- ghi ra một tệp video mới (có thể là.avi hoặc.mp4, v.v.)
Để thực hiện việc này, chúng ta cần có mã python thử nghiệm, gọi nó là test.py. Đặt nó trong cùng một thư mục với mẫu
input_video.mp4
tập tin.
Đây là những gì
test.py
có thể trông như thế nào (Lưu ý: rất cám ơn các đề xuất của Pete và Warren trong trường nhận xét - tôi đã thay thế mã thử nghiệm ban đầu của mình bằng mã thử nghiệm ban đầu của mình - vui lòng tự kiểm tra và cho chúng tôi biết nếu điều này hoạt động tốt hơn):
nhập cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = đã đọc video thành công. Sai - không đọc được video. fourcc = cv2. VideoWriter_fourcc (* 'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = ghi ra video thành công. Sai - không ghi được video. cap.release () out.release ()
Thử nghiệm này RẤT QUAN TRỌNG. Nếu bạn muốn xử lý các tệp video, bạn cần đảm bảo rằng Anaconda / Spyder IDE có thể sử dụng FFMPEG (codec video). Tôi đã mất nhiều ngày để làm cho nó hoạt động. Nhưng tôi hy vọng bạn sẽ mất ít thời gian hơn nhiều!:) Lưu ý: một mẹo rất quan trọng nữa khi sử dụng Anaconda Spyder IDE. Hãy chắc chắn rằng bạn kiểm tra Danh mục làm việc hiện tại (CWD) !!!
Bước 5: Tạo mã nhận diện khuôn mặt
Ghi bàn
Trong phiên này,
- Chúng ta sẽ thấy những điều cơ bản về nhận diện khuôn mặt bằng Bộ phân loại xếp tầng dựa trên tính năng Haar
- Chúng tôi sẽ mở rộng tương tự để phát hiện mắt, v.v.
Phát hiện thác tầng trong OpenCV
Ở đây chúng tôi sẽ giải quyết việc phát hiện. OpenCV đã chứa nhiều bộ phân loại được đào tạo trước cho khuôn mặt, mắt, nụ cười, v.v. Các tệp XML đó được lưu trữ trong thư mục opencv / data / haarcascades /. Hãy tạo bộ dò tìm khuôn mặt và mắt với OpenCV. Đầu tiên chúng ta cần tải các bộ phân loại XML cần thiết. Sau đó tải hình ảnh đầu vào (hoặc video) của chúng tôi ở chế độ thang độ xám HOẶC chúng tôi có thể sử dụng máy ảnh (để nhận diện khuôn mặt trong thời gian thực)
nhập numpy dưới dạng np
import cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sources / data / haarcascades / haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sources / data / haarcascadecades.xml ') cap = cv2. VideoCapture (0) while 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = face_cascade.detectMultiScale (xám, 1,5, 5) cho (x, y, w, h) trong các khuôn mặt: cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) roi_gray = gray [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] eyes = eye_cascade.detectMultiScale (roi_gray) for (ex, ey, ew, eh) in eyes: cv2.rectangle (roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2) print "found" + str (len (face)) + "face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff if k == 27: break cap.release () cv2.destroyAllWindows ()
Bước 6: Tạo mã để tạo tập dữ liệu
Chúng tôi đang thực hiện nhận dạng khuôn mặt, vì vậy bạn sẽ cần một số hình ảnh khuôn mặt! Bạn có thể tạo tập dữ liệu của riêng mình hoặc bắt đầu với một trong những cơ sở dữ liệu khuôn mặt có sẵn, https://face-rec.org/databases/ cung cấp cho bạn cái nhìn tổng quan cập nhật. Ba cơ sở dữ liệu thú vị là (các phần của mô tả được trích dẫn từ
- AT&T Facedatabase
- Yale Facedatabase A
- Cơ sở dữ liệu Yale Facedatabase mở rộng B
Ở đây tôi đang sử dụng tập dữ liệu của riêng mình….với sự trợ giúp của mã được cung cấp bên dưới:
nhập numpy dưới dạng np
import cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sources / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('enter user id') sampleN = 0; trong khi 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = face_cascade.detectMultiScale (xám, 1,3, 5) cho (x, y, w, h) trong các khuôn mặt: sampleN = mẫuN + 1; cv2.imwrite ("F: / Program Files / project / face_rec / faceData / User." + str (id) + "." + str (sampleN) + ".jpg", gray [y: y + h, x: x + w]) cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) nếu sampleN> 20: break cap.release () cv2.destroyAllWindows ()
Bước 7: Tạo mã để đào tạo trình nhận dạng
Tạo hàm để chuẩn bị tập huấn luyện
Bây giờ, chúng ta sẽ xác định một hàm
getImagesWithID (đường dẫn)
lấy đường dẫn tuyệt đối đến cơ sở dữ liệu hình ảnh làm đối số đầu vào và trả về bộ gồm 2 danh sách, một danh sách chứa các khuôn mặt được phát hiện và danh sách kia chứa nhãn tương ứng cho khuôn mặt đó. Ví dụ: nếu chỉ mục thứ i trong danh sách các khuôn mặt đại diện cho cá thể thứ 5 trong cơ sở dữ liệu, thì vị trí thứ i tương ứng trong danh sách các nhãn có giá trị bằng 5.
Bây giờ chuyển đổi các mặt của tập dữ liệu (được tạo ở bước 6) thành tệp.yml với sự trợ giúp của mã được cung cấp bên dưới:
nhập hệ điều hành
import numpy as np import cv2 from PIL import Image # Để nhận dạng khuôn mặt, chúng ta sẽ sử dụng Trình nhận dạng khuôn mặt LBPH = cv2.createLBPHFaceRecognizer (); path = "F: / Program Files / project / face_rec / faceData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (path) face = IDs = for imagePath trong imagePaths: # Đọc hình ảnh và chuyển đổi thành các khuôn mặt màu xámImg = Image.open (imagePath).convert ('L') faceNP = np.array (faceImg, 'uint8') # Lấy nhãn của hình ảnh ID = int (os.path.split (imagePath) [- 1].split (".") [1]) # Phát hiện khuôn mặt trong khuôn mặt hình ảnh.append (faceNP) IDs.append (ID) cv2.imshow ("Thêm khuôn mặt để traning", faceNP) cv2.waitKey (10) return np.array (ID), id khuôn mặt, khuôn mặt = getImagesWithID (đường dẫn) Recogzer.train (khuôn mặt, Id) Recogzer.save ("F: / Tệp chương trình / dự án / face_rec / faceREC / trainingdata.yml") cv2.destroyAllWindows ()
bằng cách sử dụng mã này, tất cả tập dữ liệu khuôn mặt được chuyển đổi thành một tệp.yml duy nhất….. vị trí đường dẫn là ("F: / Program Files / project / face_rec / faceREC / trainingdata.yml")
Bước 8: Tạo mã để nhận ra khuôn mặt và kết quả
Guyzz, đây là bước cuối cùng mà chúng ta có thể tạo mã để nhận dạng khuôn mặt với sự trợ giúp của webcamIN BƯỚC NÀY CÓ HAI HOẠT ĐỘNG ĐANG ĐI ĐẾN TRANG CHỦ…. 1. quay video từ cam 2. so sánh nó với tệp.yml của bạn
import numpy dưới dạng npimport cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sources / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRecognizer (); rec.load ("F: / Tệp chương trình / dự án / face_rec / faceREC / trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) trong khi 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = face_cascade.detectMultiScale (xám, 1,5, 5) cho (x, y, w, h) trong các khuôn mặt: cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) id, conf = rec.p Dự đoán (màu xám [y: y + h, x: x + w]) if (id == 2): id = "alok" if id == 1: id = "alok" if id == 3: id = "anjali" if id == 4: id = "Gaurav" if id = = 5: id = 'rahul' if id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y + h), font, 255) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
và cuối cùng kết quả sẽ hiện ra trước mắt bạn …… bạn cũng có thể tải xuống tệp zip từ liên kết bên dưới: Nhấp vào đây để tải xuống mã Vì vậy, trong hướng dẫn này, chúng tôi đã thực hiện tác vụ nhận diện khuôn mặt + nhận dạng bằng OpenCV…..nếu bạn như thế này có thể hướng dẫn….. plzzz đăng ký và bình chọn cho tôi…..cảm ơn các bạn:)
Đề xuất:
Gương nhận dạng khuôn mặt với ngăn bí mật: 15 bước (có hình ảnh)
Gương nhận dạng khuôn mặt có ngăn bí mật: Tôi luôn bị hấp dẫn bởi những ngăn bí mật luôn sáng tạo được sử dụng trong truyện, phim và những thứ tương tự. Vì vậy, khi tôi xem Cuộc thi Ngăn chứa Bí mật, tôi đã quyết định tự mình thử nghiệm ý tưởng và làm một chiếc gương soi bình thường có thể mở ra
MATLAB Nhận diện khuôn mặt dễ dàng: 4 bước
MATLAB Easy Face Detection: Mục đích chính của tài liệu hướng dẫn này là cho thấy việc xử lý hình ảnh sẽ dễ dàng đến mức nào, Với sự trợ giúp của MATLAB, theo dõi và phát hiện khuôn mặt đã là một lĩnh vực nghiên cứu quan trọng và tích cực, vì vậy đó là lý do tại sao tôi sẽ giải thích làm thế nào nó có thể được thực hiện một cách thông minh
Nhận diện, đào tạo và nhận diện khuôn mặt Opencv: 3 bước
Opencv Face Detection, Training and Recognition: OpenCV là một thư viện thị giác máy tính mã nguồn mở rất phổ biến để thực hiện các tác vụ xử lý hình ảnh cơ bản như làm mờ, trộn hình ảnh, nâng cao chất lượng hình ảnh cũng như video, tạo ngưỡng, v.v. Ngoài xử lý hình ảnh, nó kích động
Nhận dạng và Nhận dạng khuôn mặt - Arduino Face ID sử dụng OpenCV Python và Arduino.: 6 bước
Nhận dạng và Nhận dạng khuôn mặt | Arduino Face ID Sử dụng OpenCV Python và Arduino: Nhận dạng khuôn mặt ID khuôn mặt AKA là một trong những tính năng quan trọng nhất trên điện thoại di động hiện nay. Vì vậy, tôi đã có một câu hỏi " liệu tôi có thể có id khuôn mặt cho dự án Arduino của mình không " và câu trả lời là có … Hành trình của tôi bắt đầu như sau: Bước 1: Truy cập vào chúng tôi
Hệ thống bảo mật nhận dạng khuôn mặt cho tủ lạnh với Raspberry Pi: 7 bước (có hình ảnh)
Hệ thống bảo mật nhận dạng khuôn mặt cho tủ lạnh với Raspberry Pi: Duyệt qua internet, tôi đã phát hiện ra rằng giá cho các hệ thống bảo mật thay đổi từ 150 đô la đến 600 đô la trở lên, nhưng không phải tất cả các giải pháp (ngay cả những giải pháp rất đắt tiền) đều có thể được tích hợp với các giải pháp khác công cụ thông minh tại nhà của bạn! Ví dụ: bạn không thể đặt