2013-07-10 39 views
10

Tôi đang sử dụng OpenCV cho ứng dụng C++. Tôi có một hình ảnh nhị phân 8 bit có một số đối tượng. Các đối tượng có tất cả các màu 255, trong khi tất cả mọi thứ trong nền là màu 0. Mỗi đối tượng không có điểm ảnh trống (màu đen) bên trong nó. Nói cách khác, mỗi đối tượng là hoàn toàn màu trắng. Các đối tượng KHÔNG được kết nối với nhau. Đây là những gì tôi muốn trích xuất từ ​​điều này:OpenCV cách tìm danh sách các thành phần được kết nối trong hình ảnh nhị phân

Tôi muốn trích xuất một số loại danh sách đối tượng, từ đó tôi có một số khái niệm về vị trí của từng đối tượng trong danh sách đó. Điều này có thể được sử dụng cvConnectedComponents() hoặc bất cứ điều gì khác. Tôi cần một số dấu hiệu của từng đối tượng nằm trong hình ảnh. Điều này có thể ở dạng hình chữ nhật giới hạn cho mỗi đối tượng hoặc trung vị hoặc trung tâm dựa trên một số tính toán hoặc bất kỳ thứ gì mang lại cho tôi một thước đo về vị trí của đối tượng trong hình ảnh. Bất kỳ con trỏ nào về chức năng OpenCV để xem xét?

+3

Nghiên cứu ví dụ này. http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/find_contours/find_contours.html – William

+2

bản sao có thể có của [thành phần được kết nối trong OpenCV] (http://stackoverflow.com/questions/12688524/connected-components- in-opencv) – Kiran

Trả lời

7

Bạn cần phải cv :: floodFill các đường nét được trả về bởi cv :: findCountours. Xem this example cho findContours và this one cho floodFill

+2

Tôi nghĩ rằng câu trả lời với điều này nên được thay đổi ngay bây giờ mà 3.0 là [cuối cùng] là ra ngoài. –

Các vấn đề liên quan