Załóżmy, że mam dwa obrazy binarne tego samego rozmiaru. Jak znaleźć przecięcie między dwoma obrazami binarnymi? Tylko piksele o tej samej współrzędnej (położeniu) na dwóch obrazach, które są białe (szare - 255) dają białe piksele na wyjściowym obrazie (przecięcie).OpenCV - Przecięcie dwóch obrazów binarnych
13
A
Odpowiedz
34
Możesz użyć cvAnd lub cv::bitwise_and na dwóch obrazach. Wynikowy obraz będzie biały tylko wtedy, gdy oba obrazy wejściowe będą białe.
EDIT: Tutaj są wyniki stosowania cv::bitwise_and, cv::bitwise_or i cv::bitwise_xor na obrazach binarnych:
Są to obrazy dwa źródła:
Tutaj jest wynikiem stosowania cv::bitwise_and:
Tutaj jest wynikiem stosowania cv::bitwise_or:
Tutaj jest wynikiem stosowania cv::bitwise_xor:
1
Oto jak to zrobić w Pythonie (ze zdjęcia powyżej) :
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()
Jeśli chcesz zainstalować OpenCV
dla Python
, oszczędzaj czas, postępując zgodnie z these directions (instalacja historycznie była dość bolesna).
Możesz używać operatorów '&' i '|', jak opisano w http://stackoverflow.com/questions/17961092/how-do-ïdo-boolean-operation-on-mat-such-as- mat3-mat1-mat2 –