OpenCV中圖像融合


     准備2副背景圖像,注意圖像黑色的部分,是作為mask用的,我們會用灰度圖的方式打開它們,這時黑色的部分值為0,則圖像融合時候,可以把第二幅圖像在黑色的部分顯示出來。

image

image

代碼非常簡單,注意就是圖像copyTo函數的使用,把背景圖像copy到前景圖像時候,掩碼部分不會拷貝。

CImageEffect::CImageEffect()
{
backImage = cv::imread("background.png");

if(!backImage.data)
QMessageBox::about(NULL, "About Me", "can't open back image!");

maskImg = cv::imread("background.png",0);

//注意掩碼的部分,要用黑色,這樣在圖像copy時候,不會copy
if(!maskImg.data)
QMessageBox::about(NULL, "About Me", "can't oopen back image mask!");

logo1Img = cv::imread("2.png");

//注意掩碼的部分,要用黑色,這樣在圖像copy時候,不會copy
if(!logo1Img.data)
QMessageBox::about(NULL, "About Me", "can't oopen logo image mask!");
logo1maskImg = cv::imread("2.png",0);

//注意掩碼的部分,要用黑色,這樣在圖像copy時候,不會copy
if(!logo1maskImg.data)
QMessageBox::about(NULL, "About Me", "can't oopen logo mask image mask!");


}

void CImageEffect::ImageMerge1(cv::Mat& img, cv::Mat& out)
{
img.copyTo(out);
backImage.copyTo(out, maskImg);

cv::Mat imageROI;
imageROI = out(cv::Rect(10,10, logo1Img.rows, logo1Img.cols));
logo1Img.copyTo(imageROI, logo1maskImg);


}

下面是程序執行后的界面:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM