2012-07-18 83 views
6

tôi có mặt nạ này:OpenCV bitwise_and + mặt nạ

mask

Hãy nói rằng tôi muốn thực hiện một bitwise_and với hình ảnh khác để lấp đầy trong trắng làm việc này:

cv::bitwise_and(srcImage, mask, dstImage, [mask???]); 

Bây giờ, hình ảnh kết quả cho một cái gì đó như thế này:

Image + Mask

Điều này là tốt và dandy, nhưng tôi muốn trừ màu đen khỏi kết quả. Tôi đã thấy rằng bitwise_and cũng chấp nhận một hình ảnh kênh đơn 8-bit, tôi không chắc chắn chính xác những gì nó làm. Tôi cho rằng nếu nó là 0 thì nó sẽ vượt qua nếu không nó bỏ qua nó.

Vậy làm cách nào để sử dụng cùng một mặt nạ để chuyển đổi nó thành hình ảnh 8-bit và sử dụng nó để xóa màu đen của kết quả? Tôi muốn có cùng một hình ảnh, nhưng không có viền đen.

Trả lời

7

Giải pháp khá đơn giản. Vì tôi không biết nhiều về thư viện openCV nên tôi đã không sử dụng đúng chức năng cho nhiệm vụ. Tôi vẫn không chắc chắn lý do tại sao các ứng dụng bị rơi khi đi qua một mặt nạ để các bitwise_and phương pháp mặc dù.

Về cơ bản tất cả các bạn phải làm là như sau:

image.copyTo(dst, mask); 

này sẽ sao chép các hình ảnh để dst và thậm chí xử lý các chi tiết của mat cung cấp cho nó các thuộc tính tương tự như 'image'. Chỉ cần đảm bảo có mặt nạ là hình ảnh kênh đơn 8 bit. Bằng cách này, khi bạn chỉ gọi phương thức, các điểm ảnh mà vượt qua mặt nạ sẽ được sao chép sang dst.

Đây là liên kết doc để biết thêm thông tin: copyTo

0

chỉ cần tạo một khung mới lớn hơn fox_image

sau đó sử dụng “VÀ” phương pháp

hay, bạn có thể dịch các phần màu đen của hình ảnh đầu tiên màu trắng: 0 --- 255

thì sự cố sẽ được giải quyết.