Mục lục:
Video: Tạo bộ phân loại hình ảnh OpenCV bằng Python: 7 bước
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Bộ phân loại Haar trong python và opencv là nhiệm vụ khá phức tạp nhưng dễ dàng.
Chúng tôi thường phải đối mặt với các vấn đề trong phát hiện và phân loại hình ảnh. cách giải quyết tốt nhất là tạo bộ phân loại của riêng bạn. Ở đây chúng ta học cách tạo bộ phân loại hình ảnh của riêng mình bằng một vài lệnh và các chương trình python dài nhưng đơn giản
Việc phân loại yêu cầu một số lượng lớn các hình ảnh âm bản và dương bản.
Khoảng 2000 âm tính và dương tính được yêu cầu. Chương trình python chuyển đổi hình ảnh sang thang độ xám và kích thước phù hợp để bộ phân loại dành thời gian tối ưu để tạo.
Bước 1: Yêu cầu phần mềm
Bạn yêu cầu các phần mềm sau để tạo bộ phân loại của riêng bạn
1) OpenCV: phiên bản tôi đã sử dụng là 3.4.2. phiên bản có sẵn dễ dàng trên internet.
2) Python: Phiên bản được sử dụng là 3.6.2. Có thể tải xuống từ python.org
Hơn nữa, bạn yêu cầu một webcam (tất nhiên).
Bước 2: Tải xuống hình ảnh
Bước đầu tiên là chụp ảnh rõ ràng về đối tượng cần phân loại.
Kích thước không được quá lớn vì máy tính cần nhiều thời gian hơn để xử lý. Tôi đã lấy kích thước 50 x 50.
Tiếp theo, chúng tôi tải xuống các hình ảnh tiêu cực và tích cực. Bạn có thể tìm thấy chúng trực tuyến. Nhưng chúng tôi sử dụng mã python để tải xuống hình ảnh từ 'https://image-net.org'
Tiếp theo, chúng tôi chuyển đổi hình ảnh sang thang độ xám và kích thước bình thường. Đây là alo thực hiện trong mã. Mã cũng loại bỏ bất kỳ hình ảnh bị lỗi nào
Bây giờ thư mục của bạn nên chứa hình ảnh đối tượng, ví dụ: thư mục watch5050-j.webp
Nếu thư mục dữ liệu không được tạo, hãy làm điều đó theo cách thủ công
Mã python được cung cấp trong tệp.py
Bước 3: Tạo mẫu tích cực trong OpenCV
Bây giờ, hãy truy cập thư mục opencv_createsamples và thêm tất cả nội dung được đề cập ở trên
trong dấu nhắc dấu phẩy, hãy truy cập C: / opencv342 / build / x64 / vc14 / bin để tìm opencv_createsamples và opencv_traincascade ứng dụng
bây giờ thực hiện các lệnh sau
opencv_createsamples -img watch5050-j.webp
Lệnh này dùng để tạo chính xác các mẫu dương tính của đối tượng 1950 Và tệp mô tả info.lst của các ảnh dương bản mô tả phải như thế này 0001_0014_0045_0028_0028-j.webp
Bây giờ thư mục chứa
thông tin
thư mục hình ảnh phủ định
tệp bg.txt
thư mục dữ liệu trống
Bước 4: Tạo tệp vectơ dương
Bây giờ, hãy tạo tệp vectơ dương để cung cấp đường dẫn đến các hình ảnh dương trong tệp giải mã
Sử dụng lệnh sau
opencv_createsamples -info info / info.lst -num 1950 -w 20 -h 20 -vec positive.vec
Bây giờ nội dung của thư mục phải như sau:
--neg
---- negimages.jpg
--opencv
--thông tin
--dữ liệu
--positive.vec
--bg.txt
--watch5050-j.webp
Bước 5: Đào tạo trình phân loại
Bây giờ, hãy đào tạo tầng haar và tạo tệp xml
Sử dụng lệnh sau
opencv_traincascade -data data -vec positive.vec -bg bg.txt -numPos 1800 -numNeg 900 -numStages 10 -w 20 -h 20
các giai đoạn là 10 Việc tăng các giai đoạn cần nhiều xử lý hơn nhưng trình phân loại hoạt động hiệu quả hơn.
Bây giờ haarcascade được tạo Mất khoảng hai giờ để hoàn thành Mở thư mục dữ liệu ở đó, bạn sẽ tìm thấy cascade.xml Đây là trình phân loại đã được tạo
Bước 6: Kiểm tra Bộ phân loại
Thư mục dữ liệu chứa các tệp như trong hình trên.
Sau khi tạo trình phân loại, chúng ta xem trình phân loại có hoạt động hay không bằng cách chạy chương trình object_detect.py. Đừng quên đặt tệp classifier.xml trong thư mục python.
Bước 7: Cảm ơn đặc biệt
Tôi muốn cảm ơn Sentdex ở đây, người là một lập trình viên python tuyệt vời.
Anh ấy có tên youtube với cái tên đã nói ở trên và video đã giúp mình rất nhiều có link này
Hầu hết mã đã được sao chép từ sentdex. Mặc dù đã nhận được rất nhiều sự giúp đỡ từ sentdex, nhưng tôi vẫn phải đối mặt với rất nhiều vấn đề. Tôi chỉ muốn chia sẻ kinh nghiệm của tôi.
Tôi hy vọng intructable này đã giúp bạn !!! Chơ để biết thêm.
BR
Tahir Ul Haq