【OpenCV学习笔记】十三、ROI与mask掩码
来源:互联网 发布:ppt怎么画网络拓扑图 编辑:程序博客网 时间:2024/06/15 21:30
内容简介:
1.感兴趣区域(ROI)
2.掩码(mask)
3.例程:
初级融合(直接将logo复制到图像的感兴趣区域)
圆形ROI(首先新建一个掩码图像,再将logo复制到图像的感兴趣区域,只有掩码中非0部分有效)
高级融合(对掩码进行针对性处理)
图像基本运算中图像加法的掩码操作。
先上ppt:
代码:见注释
#include "opencv2/opencv.hpp"using namespace cv;void main(){///初级融合(定义图像中的ROI,将logo拷贝到ROI) // Mat img = imread("1.jpg",CV_LOAD_IMAGE_COLOR);//读入原始图片 // Mat logo = imread("opencv.jpg",CV_LOAD_IMAGE_COLOR);//读入logo图片 // 两种方式定义ROI// Mat imgROI = img(Rect(20, 20, logo.cols, logo.rows)); //Rect方法定义ROI,注意宽是:cols;高是rows。// Mat imgROI = img(Range(20, 220), Range(20, 220)); //Range方法定义ROI // 初级融合 // logo.copyTo(imgROI);//将logo图片拷贝到img的ROI上(注意copyTo函数要求两图像大小和类型都相同,否则无效) // imshow("ROI", imgROI); // imshow("dst", img); // waitKey(0); ///圆形ROI(定义图像中的ROI,将新建纯黑的mask,在mask中画一个白色圆形,将logo拷贝到ROI)// Mat img = imread("1.jpg",CV_LOAD_IMAGE_COLOR);//读入原始图片// Mat logo = imread("lena.jpg",CV_LOAD_IMAGE_COLOR);// Mat imgROI = img(Rect(20, 20, logo.cols, logo.rows)); //Rect方法定义ROI,注意宽是:cols;高是rows。// Mat mask = Mat::zeros(logo.size(), CV_8UC1); //注意这一句,创建一个同logo一样大的纯黑的mask// circle(mask, Point(mask.rows/2, mask.cols/2), 100, Scalar(255), -1, 8); //在mask中画一个向内填充的白色圆// imwrite("mask.jpg", mask);// logo.copyTo(imgROI, mask);//将logo拷贝到imgROI上,掩码为不为0的部分起作用,为0的部分不起作用// imshow("dst",img);// waitKey(0); ///高级融合(定义图像中的ROI,将mask初始化为logo的灰度类型,针对性处理,背景部分置黑,图标部分置白,再将logo拷贝到ROI)// Mat img = imread("1.jpg",CV_LOAD_IMAGE_COLOR);//读入原始图片// Mat mask = imread("opencv.jpg", CV_LOAD_IMAGE_COLOR);//将mask初始化为logo的灰度类型// Mat logo = imread("opencv.jpg",CV_LOAD_IMAGE_COLOR);//读入logo图片// Mat imgROI = img(Rect(20, 20, logo.cols, logo.rows)); //Rect方法定义ROI,注意宽是:cols;高是rows。// bitwise_not(mask, mask);//对mask图像取反,白色(255)变成黑色(0)// imshow("mask", mask);//显示mask// threshold(mask, mask, 100, 255, THRESH_BINARY);//对mask进行二值化,将mask进一步处理// imshow("threshold", mask);// logo.copyTo(imgROI, mask);//将logo拷贝到imgROI上,掩码为不为0的部分起作用,为0的部分不起作用// imshow("dst",img);// waitKey(0); ///演示了图像基本运算中图像加法的掩码操作(add函数加上了mask,要求mask的大小同src1的大小相同,否则报错)Mat img1 = imread("3.jpg",CV_LOAD_IMAGE_COLOR);Mat img2 = imread("4.jpg",CV_LOAD_IMAGE_COLOR);Mat mask =Mat::zeros(img1.size(), CV_8UC1); //建一个纯黑图像(mask的大小同src1的大小相同)circle(mask , Point(mask.cols/2, mask.rows/2), 100, Scalar(100), -1, 8);//画一个白色填充的圆Mat dst = img2.clone();//先将img2深拷贝给dstadd(img1, img2, dst, mask);//注意,要求mask的大小同src1的大小相同,否则报错imshow("dst", dst);waitKey(0);}运行结果:
初级融合:
圆形ROI:
高级融合:
图像基本运算中图像加法的掩码操作:
0 0
- 【OpenCV学习笔记】十三、ROI与mask掩码
- 第八天:ROI与mask掩码
- opencv ROI(感兴趣区域)与掩码操作 ROI图像融合
- opencv(11)---ROI与mask图像
- 【opencv学习之二十一】ROI和mask
- OpenCV中的掩码(mask)操作
- OpenCV学习笔记:矩阵的掩码操作
- 【Opencv 学习笔记】 -- ROI(Region of Interest)
- Opencv学习笔记之感性区:ROI
- openCV学习笔记-ROI区域的操作
- opencv学习笔记之mask operations
- wildcard-mask:通配符掩码与反掩码的区别
- OpenCV笔记:ROI
- OpenCV拷贝与ROI
- 【OpenCV】通过ROI区域以及掩码实现图像叠加
- OpenCV学习笔记(五)图像掩码操作
- OpenCV学习笔记05--ROI和WidthStep的运用
- OpenCV学习笔记_对图像设置ROI
- git温故而知新
- JAVA之单例模式
- Android自定义View的实现方法,带你一步步深入了解View(四)
- 使用动态代理处理异常
- git 错误
- 【OpenCV学习笔记】十三、ROI与mask掩码
- DBunit
- 【PMP】Head First PMP 学习笔记 第十二章 采购管理
- 学习入门small框架
- java synchronized的作用
- SpringBoot项目中整合dubbo/zookeeper实战
- VS2013 scanf_s引起 msvcr110d.dll xxxxxx处有未经处理的异常
- 深入理解JavaScript的闭包特性如何给循环中的对象添加事件
- C#多线程(-) -- 概念梳理