2012-07-18 67 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

只需要創建一個新的畫布比fox_image

然後用「AND」方法

或者,你可以翻譯的黑色部分大第一個圖像變成白色:0 --- 255

然後,問題就解決了。