2012-07-18 8 views
6

내가이 마스크가 마스크 :OpenCV의 bitwise_and +

mask

이의 나는이 작품 흰색을 채우기 위해 다른 이미지로 bitwise_and을하고 싶습니다 가정 해 봅시다 : 이제

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

을, 결과 이미지는 다음과 같이 나타납니다.

Image + Mask

이것은 훌륭하고 멋쟁이지만 결과에서 검정색을 뺍니다. bitwise_and가 8 비트 단일 채널 이미지를 받아들이는 것을 보았습니다. 정확히 무엇이 이루어지는지도 모르겠습니다. 나는 그것이 0이라면 그렇지 않으면 통과시키지 않을 것이라고 생각한다.

그럼 8 비트 이미지로 변환하고 결과의 검정색을 제거하는 데 동일한 마스크를 어떻게 사용합니까? 나는 같은 이미지를 원하지만 검은 색 테두리가 없다.

답변

7

해결책은 간단합니다. openCV 라이브러리에 대해 많이 알지 못했기 때문에 작업에 올바른 기능을 사용하지 못했습니다. 여전히 확실하지 않은 이유는 응용 프로그램이 bitwise_and 메서드에 마스크를 전달할 때 충돌이 발생했기 때문입니다.

은 기본적으로 당신이 할 일은 않습니다 :

image.copyTo(dst, mask); 

이것은 DST에 이미지를 복사하고 심지어 그것을 '이미지'와 같은 속성을 제공하기 위해 매트의 세부 사항을 처리합니다. 마스크를 8 비트 단일 채널 이미지로 만들어야합니다. 이 방법을 사용하면 메서드를 호출 할 때 마스크를 통과하는 픽셀 만 dst에 복사됩니다. copyTo

0

그냥

그런 다음 "AND"방법

또는, 당신의 검은 부분을 번역 할 수 있습니다 사용하는 fox_image보다 큰 새 캔버스를 만들 : 여기

은 자세한 내용은 문서 링크입니다 흰색으로 첫 번째 이미지 : 0 --- 255

그러면 문제가 해결됩니다.