Hướng dẫn findcontours opencv-python - findcontours opencv-python
Contour là gìCác bạn có thể hiểu contour là “tập các điểm-liên-tục tạo thành một đường cong (curve) (boundary), và không có khoảng hở trong đường cong đó, đặc điểm chung trong một contour là các các điểm có cùng /gần xấu xỉ một giá trị màu, hoặc cùng mật độ. Contour là một công cụ hữu ích được dùng để phân tích hình dạng đối tượng, phát hiện đối tượng và nhận dạng đối tượng”. Để tìm contour chính xác, chúng ta cần phải nhị phân hóa bức ảnh (nhớ là ảnh nhị phân nha các bạn, không phải ảnh grayscale đâu). Các kỹ thuật nhị phân hóa ảnh ở xử lý ảnh cơ bản có thể liệt kê đến là đặt ngưỡng, hoặc candy edge detection. Chúng ta sẽ không bàn kỹ về các cách đặt ngưỡng ( mặc dù có khá nhiều cách đặt ngưỡng, và trong opencv cũng có implement một vài phương pháp, nhưng nó không phải là mục tiêu của bài này, nên mình không đề cập ở đây) hoặc edge detection ở bài viết này, mà chúng ta sẽ đi vào các tìm contours bằng các sử dụng opencv luôn. Trong opencv, việc tìm một contour là việc tìm một đối tượng có màu trắng trên nền đen. Cho nên, các bạn hãy nhớ rằng hãy set đối tượng thành màu trắng và để nền là màu đen, đừng làm ngược lại nha. Một lưu ý nhỏ là tại thời điểm mình viết bài viết này, mình sử dụng phiên bản opencv3.6. Các bạn có thể sử dụng phiên bản opencv mới hơn, nhưng có thể những sample code mình để bên dưới sẽ không work, do không tương thích. Sử dụng contour trong opencvOpencv hỗ trợ cho chúng ta hàm để tìm contour của một bức ảnh
Trong đó:
Ví dụ về các sử dụng hàm
Opencv hỗ trợ chúng ta hàm để vẽ contor lên bức ảnh, giúp chúng ta nhìn rõ ràng hơn
Với:
Ví dụ: Đếm số lượng quả bóng bay trong hìnhGiả sử chúng ta có bức ảnh Bong bóng bay Bong bóng bayChúng ta thực hiện tìm contour của ảnh trên bằng cách
Kết quả: Contour màu xanh là đường curve bao quanh dữ liệu được rút trích đượcCảm ơn các bạn đã theo dõi. Hẹn gặp bạn ở những bài viết tiếp theo. |