opencv(11)---ROI与mask图像
来源:互联网 发布:大学生程序员如何赚钱 编辑:程序博客网 时间:2024/05/24 06:30
感兴趣区域ROI
基本概念
ROI—(region of interest)—感兴趣区域
1 形状
一般为矩形区域
2 作用
能够确定分析重点,减少处理时间,增加精度
3 定义方法
使用Rect表示矩形区域或用Range设定行列范围
作用
1.交通灯检测
只分析图片正上方的一部分区域
2.人脸识别
将处理范围缩小
3.车牌识别
减少误拍,提高处理的速度和精度
代码1- - -提取感兴趣区域
1.代码
Mat img=imread("1.png"); if(img.empty()){ cout<<"no data read!"<<endl; return ; } //1.Rect方法进行定义 Mat imgROI=img(Rect(20,20,100,200)); //2.Range方法显示 //Mat imgROI=img(Range(20,220),Range(20,120)); imwrite("imgROI.jpg",imgROI);
2.知识点讲解
有两种方式来获取一副图像中的感兴趣区域。
1)使用Rect方式进行定义
Mat imgROI=img(Rect(20,20,100,200));
2)使用Range方式进行定义
Mat imgROI=img(Range(20,220),Range(20,120);
两种方式的运行结果完全相同。
代码2- - -初级图像融合
1. 代码
Mat img=imread("1.jpg");Mat logo=imread("opencv.jpg");Mat imgROI=img(Rect(20,20,logo.cols,logo.rows));//imgROI=img(Range(20,20+logo.rows),Range(20,20+logo.cols));logo.copyTo(imgROI);imshow("imgROI",img);
2.知识点讲解
logo.copyTo(imgROI);
将logo这幅图片复制到imgROI上,这时,img图片就被污染了
3.运行结果
mask掩码
基本概念
1.mask—(掩码)
一个8位单通道图像(灰度图/二值图)
2.操作方式
掩码某个位置如果为0,则在此位置上的操作不起作用
掩码某个位置如果不为0,则在此位置上的操作会起作用
3.作用
可以用来提取不规则ROI
4.图示
5.注意事项
mask图像的大小必须和原图相同;
需要将mask图像设置为二值图
制作mask图像
一 制作步骤
设需要为lena.jpg制作掩码图像
1.复制lena.jpg图像,重命名为mask.jpg
2.以绘图方式打开mask.jpg图像
3. 将mask.jpg整幅图像设置为黑色,自己感兴趣的区域填充为白色,保存即可。
二 代码
Mat img=imread("1.jpg");Mat logo=imread("lena.jpg");/*直接采用图像来设置掩码*///0 采用灰度模式Mat mask=imread("mask.jpg",0);Mat imgROI=img(Rect(20,20,logo.cols,logo.rows));logo.copyTo(imgROI,mask);imshow("imgROI",img);
三 运行结果
使用代码来制作二值mask图像(推荐)
1.代码
Mat img=imread("1.jpg");Mat logo=imread("lena.jpg");//1.先创建一个纯黑的图像 CV_8UC1说明创建的图像为二值图Mat mask=Mat::zeros(logo.size(),CV_8UC1);//2.创建一个圆形区域 具体circle函数参见原先的总结circle(mask,Point(mask.rows/2,mask.cols/2),100,Scalar(255),-1,8);Mat imgROI=img(Rect(20,20,logo.cols,logo.rows));logo.copyTo(imgROI,mask);imshow("imgROI",img);
2.运行结果
高级图像融合
代码
Mat img=imread("1.jpg");Mat logo=imread("opencv.jpg");Mat mask=imread("opencv.jpg",0);//1.图像取反---图像的基本运算比较重要 逻辑取反bitwise_not(mask,mask);//2.二值化---注意控制阈值threshold(mask,mask,100,255,THRESH_BINARY);Mat imgROI=img(Rect(20,20,logo.cols,logo.rows));logo.copyTo(imgROI,mask);imshow("imgROI",img);
运行结果
知识点
1.图像的基本运算的应用
//1.图像取反---图像的基本运算比较重要 逻辑取反bitwise_not(mask,mask);
这段代码可以将原先的图像像素进行取反。
使得原先为白色的位置,经过逻辑取反后,值为0;
原图不为白色的位置,经过逻辑取反后,值不为0.
从而决定mask图像起作用的位置
2.图像阈值化后以二值图像设置
//2.二值化---注意控制阈值threshold(mask,mask,100,255,THRESH_BINARY);
可以设置低于某个像素值的值为0,从而去除一些毛边;
阈值需要自己控制
6. 图像基本运算与mask图像
代码
Mat img1=imread("D:\\1\\48.png");Mat img2=imread("D:\\1\\99.png");Mat mask=Mat::zeros(img1.size(),CV_8UC1);circle(mask,Point(img1.rows/2,img1.cols/2),100,Scalar(255),-1,8);Mat dst=img2.clone();//设置掩码后,只有设置掩码的部分起作用;其它部分不起作用,和掩码图像相同add(img1,img2,dst,mask);imshow("dst",dst);
运行结果
- opencv(11)---ROI与mask图像
- 【OpenCV学习笔记】十三、ROI与mask掩码
- opencv ROI(感兴趣区域)与掩码操作 ROI图像融合
- opencv----图像显示、ROI
- 第八天:ROI与mask掩码
- OpenCV中图像设置ROI
- OpenCV ROI区域图像叠加
- opencv序列图像ROI获取
- Opencv ROI区域图像叠加
- OpenCV拷贝与ROI
- 【opencv学习之二十一】ROI和mask
- opencv 图像叠加ROI & 图像混合
- OpenCV Mat 拷贝与ROI
- OpenCV:设置图像的感兴趣区域(ROI)
- 【OpenCV】复制、切割出图像ROI区域
- OpenCV截取图像ROI,任意形状
- OpenCV之ROI图像叠加和混合
- OpenCV对图像进行mask操作
- eclipse安装activiti5.18.0工作流插件 以及安装过程中activiti插件出现的问题及解决
- HDU 3499 Flight (SPFA+分层图)
- 欢迎使用CSDN-markdown编辑器
- 禅道-从windows7迁移至ubuntu14.04之三
- Oracle中ROWNUM伪列和ROWID伪列的用法与区别
- opencv(11)---ROI与mask图像
- Problem A: 时间和日期类(I)
- HibernateSQL查询 addScalar()或addEntity()
- Nginx源码编译安装及配置文件解读
- 将某一个文件一分为二,分别保存在两个临时文件中
- TensorFlow实战——DNN——MNIST数字识别
- ubuntu有线无法上网
- Python:函数2——变量的作用域 、 返回值
- 一个自由定制可展开的的Material Design风格FloatingActionButton