2011-01-05 4 views
3

두 이미지를 서로 위에 표시하고 있습니다. 하나의 이미지는 단일 채널 이미지이고 두 번째 이미지는 RGB 이미지이지만 대부분의 영역은 투명합니다.OpenCV로 표시 할 때 이미지가 겹쳐 표시

이 두 이미지가 다른 기능에서 어떻게 생성되는지 설명합니다. 나는 이들을 서로 위에 표시하는 것을 알고, cvShowImage()를 호출 할 때 같은 창 이름을 사용할 수 있지만 다른 기능에서 그려지는 경우에는 작동하지 않습니다. 이것을 시도 할 때, 저는 cvCvtcolor()을 사용하여 이진 이미지를 단일 채널에서 RGB로 변환 한 다음 다른 기능에서 두 번째 이미지를 표시했습니다. 그러나 이것은 효과가 없었습니다. 두 이미지는 동일한 치수, 깊이 및 채널 수 (변환 후)입니다.

하나의 이미지를 두 번째 함수로 전달하지 않고 그립니다. 그래서 나는이 두 이미지를 겹쳐서 표시하는 빠른 더러운 속임수를 찾고 있습니다.

감사합니다

편집 : alt text

+0

를 사용하여이 당신은/혼합 2 개 이미지를 추가하려고? http://stackoverflow.com/questions/3459960/blending-two-images-by-opencv/3460287#3460287 – karlphillip

+0

정확하지는 않지만 내 첫 번째 이미지는 얼룩을 보여주는 이진 이미지이고 두 번째 이미지는이 얼룩에 대한 경계 상자를 포함합니다. . 그래서 저는 그것들을 문자 그대로 서로에게 보여주고 싶습니다. 위의 게시물을 편집하여 두 이미지를 보여줍니다. 덕분에 – AtharvaI

답변

1

나는 그렇게 생각하지 않습니다. 새 이미지를 만들거나 기존 이미지를 수정해야합니다. 다음은이 작업을 수행하는 방법을 보여줍니다 기사입니다 : Transparent image overlays in OpenCV

1

방법을 "오버레이"이미지가 없습니다. cvShowImage()은 메모리에서 단일 이미지를 표시합니다. 함께 혼합/결합해야합니다. 이를 수행하는 몇 가지 방법이 있습니다.
하나를 다른 채널로 복사 할 수 있으며 AND, OR 또는 XOR과 같은 논리 연산을 사용할 수 있으며 Add, Multiply 및 MultiplyScale과 같은 산술 연산을 사용할 수 있습니다 (이러한 연산은 255보다 큰 값을 포화시킵니다). 이 모든 작업은 블로 브 이미지와 같은 선택적 마스크 이미지를 사용하여 수행 할 수도 있습니다.
당연히 원본을 덮어 쓰지 않도록이 작업을 세 번째 버퍼로 할 수 있습니다.

관련 문제