1. 程式人生 > >openCV-影象ROI、疊加和線性混合

openCV-影象ROI、疊加和線性混合

程式碼參考自《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);
原圖
logo1
logo
疊加圖

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);
線性混合影象