2010-02-27 65 views
5

Tôi đang tìm chức năng tương tự hoặc tương đương của Matlabs "Bwareaopen" trong OpenCV?Chức năng tương đương Matlab Bwareaopen trong OpenCV

Trong MatLab Bwareaopen (hình ảnh, P) xóa khỏi hình ảnh nhị phân tất cả các thành phần được kết nối (đối tượng) có ít hơn P pixel.

Trong hình ảnh 1 kênh của tôi, tôi chỉ muốn xóa các khu vực nhỏ không phải là một phần của những khu vực lớn hơn? Có cách nào nhỏ nhặt để giải quyết vấn đề này không?

Trả lời

3

Hãy xem cvBlobsLib, nó có chức năng để thực hiện những gì bạn muốn. Trong thực tế, ví dụ mã trên trang đầu của liên kết đó thực hiện chính xác những gì bạn muốn, tôi nghĩ vậy. Về cơ bản, bạn có thể sử dụng CBlobResult để thực hiện ghi nhãn thành phần được kết nối trên hình ảnh nhị phân của bạn và sau đó gọi Filter để loại trừ các đốm màu theo tiêu chí của bạn.

+0

cảm ơn tzaman cho câu trả lời nhanh chóng và ur phải cvBlobsLib là chính xác những gì tôi cần. nhưng bây giờ vấn đề là Im không shure tôi có thể nhập khẩu những cvBlobsLib trong thư viện dự án Xcode của tôi (iPhone) và tôi đã có rất nhiều công việc ngay cả khi nhập khẩu libs opencv. Bạn có nghĩ rằng tôi chỉ có thể sao chép các phần của mã ra khỏi libs mà tôi sẽ cần? – Miha

+0

Tôi đã không thực sự sử dụng cvBlobsLib bản thân mình (hoặc Xcode!), Nhưng nó được phân phối như là nguồn, vì vậy bạn sẽ có thể chỉ cần thêm tất cả các tập tin '.cpp' và' .h' vào dự án của bạn, '# include' các tiêu đề thích hợp và lấy nó từ đó. – tzaman

+0

Ngoài ra, đừng quên chấp nhận/upvote câu trả lời nếu nó hữu ích! :) – tzaman

0

Không có một chức năng như vậy, nhưng bạn có thể 1) tìm đường nét 2) Tìm đường viền khu vực 3) lọc tất cả các đường nét bên ngoài với diện tích ít hơn ngưỡng 4) Tạo mới hình ảnh đen 5) Vẽ đường viền trái trên nó 6) Mặt nạ nó với một hình ảnh gốc

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