OpenCV2编程手册笔记之 2.8定义感兴趣区域(ROI)
来源:互联网 发布:linux下新建文件命令 编辑:程序博客网 时间:2024/05/23 22:18
在这里,我们要执行一次插入命令,合并两张大小不同的图片。
由于add函数只能执行大小一样图片的结合,因此我们先要在较大的图片上定义一块和小图片同样大小的区域,然后再将这二者叠加。
方法一:
直接选取感兴趣区域,这种方法之所以可行就在于ROI区域和他的父图像都指向同一块内存区域。
也就是说,选定的ROI区域就是原图像的一个部分指针,对ROI进行操作就是对原图像进行操作。
代码实现:
cv::Mat image = cv::imread("...\\boldt.jpg");
cv::Mat logo = cv::imread("...\\logo.bmp");
cv::Mat imageROI;
imageROI = image(cv::Rect(385, 270, logo.cols, logo.rows));
cv::addWeighted(imageROI, 1.0, logo, 0.3, 0.0, imageROI);
cv::imshow("added_one", image);
cv::waitKey(0);
return 0;
方法二:
对于简单的相加,有可能出现像素饱和,因此,采取掩模板的方法进行像素替换是更好的选择。
仍然是选定ROI
之后,将目标图像以灰度的形式读取出来。因为这样,这张目标图像就会是一张二值图片,可以当作掩模板。
这样,再采取copyTo的方法,掩模板为0的地方保留原图像ROI,为1的地方替换成新图像logo,完成像素替换。
代码实现:
cv::Mat image = cv::imread("F:\\Image\\boldt.jpg");
cv::Mat logo = cv::imread("F:\\Image\\logo.bmp");
cv::Mat mask = cv::imread("F:\\Image\\logo.bmp", 0);
cv::Mat imageROI;
imageROI = image(cv::Rect(385, 270, logo.cols, logo.rows));
//cv::addWeighted(imageROI, 1.0, logo, 0.3, 0.0, imageROI);
logo.copyTo(imageROI, mask);
cv::imshow("added_one", image);
cv::waitKey(0);
return 0;
- OpenCV2编程手册笔记之 2.8定义感兴趣区域(ROI)
- 定义感兴趣区域ROI
- 《OpenCV2计算机视觉编程手册》2-8定义感兴趣区域(打水印)
- OpenCV之感兴趣区域(ROI)
- opencv学习之感兴趣区域(ROI)
- opencv--学习之感兴趣区域(ROI)
- [OpenCV2]定义感兴趣的区域
- Open CV 学习开发笔记之ROI(Region Of Interest)感兴趣区域(三)
- OpenCV2编程手册笔记之 7.5提取连通区域轮廓
- Halcon学习 ROI(感兴趣区域)
- ROI感兴趣区域
- Opencv感兴趣区域-ROI
- 感兴趣区域ROI
- opencv开发笔记(八):利用感兴趣区域ROI实现图像叠加
- OpenCV笔记5:设置图像的感兴趣区域(ROI)
- OpenCV2编程手册笔记之 7.6计算连通区域的形状描述符
- opencv 感兴趣区域建立ROI
- Iplimage设置感兴趣区域(ROI)
- 好文章地址记录博客
- 汇编条件判断 eq neq
- CodeForces 236 A.Boy or Girl(水~)
- 正确做事与做正确的事
- 远端连接服务器无法绘图的bug怎么解决
- OpenCV2编程手册笔记之 2.8定义感兴趣区域(ROI)
- JavaScript 运行机制详解:Event Loop
- LeetCode· 39. Combination Sum
- new jazz music club could be a tremendously profitable enterprise
- matlab2c使用c++实现matlab函数系列教程- poly函数
- 算法详解【冒泡排序】
- Java之面向对象
- 请求网络,绘制ListView
- 1801:斜率计算