2012-06-29 68 views
13

Giả sử tôi có hai hình ảnh nhị phân có cùng kích thước. Làm cách nào để tìm giao lộ giữa hai hình ảnh nhị phân? Chỉ các pixel của cùng một tọa độ (vị trí) trên hai hình ảnh có màu trắng (xám - 255) sẽ cung cấp các pixel trắng trên hình ảnh đầu ra (giao lộ).OpenCV - Giao điểm giữa hai hình ảnh nhị phân

+0

Bạn có thể sử dụng toán tử '&' và '|', như được mô tả trong http://stackoverflow.com/questions/17961092/how-do-i-do-boolean-operation-on-mat-such-as- mat3-mat1-mat2 –

Trả lời

34

Bạn có thể sử dụng cvAnd hoặc cv::bitwise_and trên hai hình ảnh. Hình ảnh kết quả sẽ chỉ có màu trắng khi cả hai hình ảnh đầu vào đều có màu trắng.

EDIT: Đây là kết quả của việc áp dụng cv::bitwise_and, cv::bitwise_orcv::bitwise_xor hình ảnh nhị phân:

Đây là những hình ảnh hai nguồn:

image 1image 2

Đây là kết quả của việc áp dụng cv::bitwise_and:

imgAnd

Đây là kết quả của việc áp dụng cv::bitwise_or:

imgOr

Đây là kết quả của việc áp dụng cv::bitwise_xor:

imgXor

1

Dưới đây là làm thế nào để làm điều này trong python (với những hình ảnh ở trên) :

import cv2 

img1 = cv2.imread('black_top_right_triangle.png',0) 
img2 = cv2.imread('black_bottom_right_triangle.png',0) 

img_bwa = cv2.bitwise_and(img1,img2) 
img_bwo = cv2.bitwise_or(img1,img2) 
img_bwx = cv2.bitwise_xor(img1,img2) 

cv2.imshow("Bitwise AND of Image 1 and 2", img_bwa) 
cv2.imshow("Bitwise OR of Image 1 and 2", img_bwo) 
cv2.imshow("Bitwise XOR of Image 1 and 2", img_bwx) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Nếu bạn cần cài đặt OpenCV cho Python, hãy tiết kiệm thời gian bằng cách theo dõi these directions (quá trình cài đặt trước đây có thể là một nỗi đau).

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