openCV-影象ROI、疊加和線性混合
阿新 • • 發佈:2018-12-19
程式碼參考自《openCV3 程式設計入門》毛星雲,冷雪飛等編著
影象的線性混合可以通過改變引數使融合得更逼真。
1. 影象的ROI
//【2】定義一個Mat型別並給其設定ROI區域
Mat imageROI;
//方法一
imageROI= srcImage4(Rect(200,250,logoImage.cols,logoImage.rows));
//方法二
imageROI= srcImage4(Range(250,250+logoImage.rows),Range(200,200+logoImage.cols));
2. 影象疊加
Mat srcImage1= imread("dota_pa.jpg"); Mat logoImage= imread("dota_logo.jpg"); if( !srcImage1.data ) { printf("讀取srcImage1錯誤~! \n"); return false; } if( !logoImage.data ) { printf("讀取logoImage錯誤~! \n"); return false; } // 【2】定義一個Mat型別並給其設定ROI區域 Mat imageROI= srcImage1(Rect(200,250,logoImage.cols,logoImage.rows)); // 【3】載入掩模(必須是灰度圖) Mat mask= imread("dota_logo.jpg",0); //【4】將掩膜拷貝到ROI logoImage.copyTo(imageROI,mask); // 【5】顯示結果 namedWindow("<1>利用ROI實現影象疊加示例視窗"); imshow("<1>利用ROI實現影象疊加示例視窗",srcImage1);
3. 影象線性混合
Mat srcImage4= imread("dota_pa.jpg",1); Mat logoImage= imread("dota_logo.jpg"); if( !srcImage4.data ) { printf("讀取srcImage4錯誤~! \n"); return false; } if( !logoImage.data ) { printf("讀取logoImage錯誤~! \n"); return false; } //【2】定義一個Mat型別並給其設定ROI區域 Mat imageROI; //方法一 imageROI= srcImage4(Rect(200,250,logoImage.cols,logoImage.rows)); //【3】將logo加到原圖上 addWeighted(imageROI,0.5,logoImage,0.3,0.,imageROI);