2011-01-05 134 views
3

我有兩個圖像要顯示在彼此之上。一個圖像是單通道圖像,第二個圖像是RGB圖像,但大部分區域是透明的。在OpenCV中顯示時疊加圖像

如何在不同的功能中生成這兩個圖像。我知道只是將這些顯示在對方的頂部,我可以在撥打cvShowImage()時使用相同的窗口名稱,但是當它們從不同的功能繪製時,這不起作用。嘗試此操作時,我使用cvCvtcolor()將單個通道的二進制圖像轉換爲RGB,然後從另一個函數顯示第二個圖像。但是這不起作用。兩幅圖像的尺寸,深度和通道數量相同(轉換後)。

我想避免將一個圖像傳入第二個函數,然後繪製它們。所以我正在尋找一個快速骯髒的技巧來顯示這兩個重疊的圖像。

謝謝

編輯: alt text

+0

版本是你想添加/混合2個圖像? http://stackoverflow.com/questions/3459960/blending-two-images-by-opencv/3460287#3460287 – karlphillip 2011-01-05 15:06:01

+0

不完全,我的第一個圖像是一個二進制圖像顯示斑點,而我的第二個圖像包含這些斑點的邊界框。所以我只想簡單地將它們展示給對方。我將編輯我的上述帖子以顯示兩張圖片。 – AtharvaI 2011-01-05 15:28:13

回答

1

我不認爲這是可能的。你將不得不創建一個新的圖像或修改現有的圖像。這裏說明了如何做到這一點的文章:Transparent image overlays in OpenCV

1

有沒有辦法爲 「疊加」 圖片。 cvShowImage()顯示來自內存的單個圖像。你需要將它們混合在一起。有幾種方法可以做到這一點。
您可以將一個複製到另一個的一個或兩個通道中,您可以使用AND,OR或XOR等邏輯運算,可以使用像Add,Multiply和MultiplyScale這樣的算術運算(這些運算將使飽和值大於255)。所有這些也可以通過一個可選的蒙版圖像來完成,比如你的斑點圖像。
當然,您可能希望將其寫入第三個緩衝區,以免覆蓋您的原稿。