opencv学习(十一)// ROI // 图像叠加 // 线性混合 // ROI+线性混合
2018-04-12 12:48
387 查看
1,选定感兴趣区域ROI,进行图像叠加
2,线性混合(addWeighted)
addWeighted()函数
效果图
3,指定区域ROI+线性混合
效果图(对比1)
以上应用实例
#include<opencv2/opencv.hpp> using namespace cv; using namespace std; //对全局函数进行声明 // bool ROI_ADDImage(); bool LinearBlending(); bool ROI_linearBlending(); //主函数 int main() { system("color F");// color of Background of window if (ROI_ADDImage()&&LinearBlending()&&ROI_linearBlending()) { printf("sucess!"); cout << endl << "\n运行成功,得出了需要的图像";//same function with the upper one, to make the window stay } waitKey(0); return 0; } //选感兴趣区域ROI,实现图像叠加函数 // // bool ROI_ADDImage() { Mat aimag = imread("D://3.jpg"); Mat logoimag = imread("D://4.jpg");//imread image if (!aimag.data)//untersuchen,ob es falsch ist { printf("aimg is false!\n"); return 0; } if (!logoimag.data) { printf("logoimg is false!\n"); return 0; } Mat imageROI = aimag(Rect(20, 0, logoimag.cols, logoimag.rows));//选取ROI区域(位置,大小) Mat mask = imread("2.jpg",0);//掩膜(必须为灰度图) logoimag.copyTo(imageROI, mask);//将掩膜复制到ROI区域 namedWindow("use ROI to composition of two images"); imshow("use ROI to composition of two images", aimag); return true; } //函数:实现线性图像混合(addWeighted)注意!两幅图尺寸需一致) // // bool LinearBlending() { double alphaValue = 0.5; double betaValue; Mat img2, img3, bimg; img2 = imread("D://mogu.jpg"); img3 = imread("D://rain.jpg"); if (!img2.data)//untersuchen,ob es falsch ist { printf("aimg is false!\n"); return 0; } if (!img3.data) { printf("logoimg is false!\n"); return 0; } betaValue = (1 - alphaValue); addWeighted(img2, alphaValue, img3, betaValue, 0, bimg);//图像混合加权操作 imshow("2)before_LinearBlending", img2); imshow("3)after_LinearBlending", bimg); } //函数;ROI+linearBlending,选定区域+线性混合 // // bool ROI_linearBlending() { Mat img4 = imread("D://3.jpg", 1); Mat logoimag = imread("D://4.jpg");//imread image if (!img4.data)//untersuchen,ob es falsch ist { printf("aimg4 is false!\n"); return 0; } if (!logoimag.data) { printf("logoimg is false!\n"); return 0; } Mat imageROI2; imageROI2 = img4(Rect(200, 250, logoimag.cols, logoimag.rows));//选取ROI区域(位置,大小)→→方法二//imageROI=img4(Range(250,250+logoImage.rows),Range(250,250+logoImage.cols)); addWeighted(imageROI2, 0.5, logoimag, 0.3, 0,imageROI2); imshow("4)ROI+Linearblending", img4); return true; }
相关文章推荐
- OpenCV学习笔记(四):ROI区域图像叠加和图像线性混合
- OpenCV 学习记录4 ROI区域图像叠加及线性图像混合
- OpenCV入门,线性混合 使用addWeight函数将两幅图像叠加
- opencv 学习之图像可调节线性混合
- opencv学习笔记-图像叠加、混合
- opencv学习(八)之ROI区域和图像混合叠加
- opencv学习笔记(十一)——图像腐蚀和膨胀混合运用练习
- 【OpenCV学习笔记】2.1图像混合和叠加
- 【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析
- 【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析
- opencv 图像叠加ROI & 图像混合
- c# opencvsharp学习笔记(3)兴趣区域ROI,图像叠加,操作像素点
- opencv学习笔记10 使用OpenCV对两幅图像求和(求混合(blending))¶
- OpenCV之四 ROI区域图像叠加&初级图像混合
- 【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析
- 我的OPENCV学习笔记-图像混合
- 学习OpenCV范例(十一)——图像的腐蚀与膨胀
- opencv 2.x学习笔记(八)滚动条、混合图像
- 【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析
- opencv图像线性混合操作