例3-12opencv设置ROI感兴趣区域
前面说了一堆,也不知道啥用,感觉也没说清楚,可能确实需要一些例子来显性表示一下,或者他们在当初出版书籍针对的人群已经有了对图像的基本认识,然而自己还是没有建立起来,往后看看吧,希望能比较清楚的自己处理一些图像,知道一些如是能对某个像素的某个通道的值进行改变那么很多问题就变得简单,我想,开始的例子应该也是这里,但是没有所见即所得的即触感,感觉……很生硬。
例3-12这个例子也很坑,
所以自己简单整理了一下。
要输入7个参数。这个对于c c++的要求还是比较高的。atoi函数也比较高级。所以能不能继续像前面一样,把例程跑起来,然后在例程的基础之上完成对知识点的讲解。
先上例程:
#include "highgui.h"
#include "cv.h" int main(){ IplImage* src;
src = cvLoadImage("1.png");
cvNamedWindow("e3", );//0是可变大小,1是固定大小且与内容适配
int x = ;
int y = ;
int width = ;
int height = ;
int add = ; cvSetImageROI(src, cvRect(x, y, width, height));
cvAddS(src, cvScalar(add), src);
cvResetImageROI(src); cvShowImage("e3", src);
cvWaitKey(); return ;
}
这样做的好处是,避免了到cmd命令行中,手敲内容。少了很多的学习代价,比如每次看到主函数参数,就很让人头疼。所以这里面又把不相干的去掉了,如果为了得到书上的代码可以参考这个同学的笔记:
http://blog.csdn.net/shangyt/article/details/5747017
然后不小心看到回复了,发现这样做还是有点儿必要的。
首先要保证运行目录下面有1.png.然后直接执行就可以了:

的确是有一个小篮矩形。
根据前面的学习经验,这里需要理解的就只是cvSetImageROI(src, cvRect(x, y, width, height));
cvAddS(src, cvScalar(add), src); cvResetImageROI(src); 这三行,书上又描述了cvSetImageROI和 cvResetImageROI() 所以不理解的就只有cvAddS()了。
从函数的名字大概知道是计算机视觉设置图片ROI 跟重置图片ROI。然后传参数就可以了。那么ROI:(这书上也没给,倒是给了个相近的概念COI,所以还是母语是英语有点儿好处的,要不然人家的东西就看不懂,所以换句话说,如果我们足够发达在某些地方占有一席之地,然后我们也做了很多需要别人学的内容,这样别人会感慨要是母语是汉语就好了。)好了ROI是region of interest;COI是Channel of interest。分别代表感兴趣区域,感兴趣通道。嗯,其实就是侧重区域,跟侧重通道。对于一整幅图像来说,/*【看看之前发的fps的相关内容,就知道,】比如1920*1080的。就是这么多个像素点。picture Element 简写作 pixel。每个颜色有RGB加和而成。假设每个颜色是8位,0-255。也就是一个点要3个字节。所以一共是1920*1080*3个字节,要看电影每秒要24帧。才能让静态播放的图片让人感觉起来不卡顿。也就是每秒要处理1920*1080*3*24个字节,这还只是理论上实际上要更大。有的显示器可能液晶的每秒是60帧,阴极射线管(CRT)要到每秒75帧以上,打游戏肯定不能满足于每秒24帧,打个lol怎么也要到60fps(frames per second),所以处理的数据量是十分巨大的,所以在有了cpu之后图像太费处理器了,干脆就有了gpu,集成显卡不好使,就又多了独立显卡,都是因为图像的处理十分耗费资源,所以。*/如果能只对某一部分进行处理的话,就会好很多,这样就出现了侧重区域,和侧重通道。
上题例程中我们给了一个侧重区域,以图像左上方为原点,水平方向为x轴,沿右侧方向为正方向,垂直方向为y轴,向下为正方向。(100,100)点为原点。一个50*50像素的正方形被画出。这个区域就是我们的感兴趣区域。
然后,设想是不是其他形状的ROI也被支持。按F12
/* Sets image ROI (region of interest) (COI is not changed) */
CVAPI(void) cvSetImageROI( IplImage* image, CvRect rect );
发现只有矩形区域被支持。
然后看增强函数;这个cvAddS(src,cvScalar(add),src);
然后开始试这几个参数:
发现 分别是bgr,最后一个参数,不得而知,难道是透明度?好像不是,先不管。总之前面几个都是颜色的不同通道值。
cvAddS(src, cvScalar(-255,-255,-255,0.5), src);
这样让目标区域全黑
cvAddS(src, cvScalar(255,255,255,0.5), src);
这样让目标区域全白
有了add必然应该有减法,所以看到了sub估计就跑不远了。
cvSubS(src, cvScalar(255,255,255,0.5), src);
这样让目标区域全黑,因为每个通道的值减到0以下,就会按全黑显示。
例3-12opencv设置ROI感兴趣区域的更多相关文章
- opencv —— copyTo 设置与操作感兴趣区域(ROI)
感兴趣区域:ROI 对感兴趣区域进行的一系列操作,相当于直接在原图相应部分进行操作. Mat imageROI = srcImage(Rect(0,0,dstImage.cols, dstImage. ...
- opencv探索之路(十二):感兴趣区域ROI和logo添加技术
在图像处理领域,有一个非常重要的名词ROI. 什么是ROI? 它的英文全称是Region Of Interest,对应的中文解释就是感兴趣区域. 感兴趣区域,就是我们从图像中选择一个图像区域,这个区域 ...
- opencv——感兴趣区域(ROI)的分析和选取[详细总结]
引言 在利用OpenCV对图像进行处理时,通常会遇到一个情况,就是只需要对部分感兴趣区域进行处理.因此,如何选取感兴趣区域呢?(其实就是"抠图"). 在学习opencv的掩码运算后 ...
- 获取图片中感兴趣区域的信息(Matlab实现)
内容提要 如果一幅图中只有一小部分图像你感兴趣(你想研究的部分),那么截图工具就可以了,但是如果你想知道这个区域在原图像中的坐标位置呢? 这可是截图工具所办不到的,前段时间我就需要这个功能,于是将其用 ...
- OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道
11 绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...
- [zt] ROI (Region of Interest) 感兴趣区域 OpenCV
在以前介绍IplImage结构的时候,有一个重要的参数——ROI.ROI全称是”Region Of Interest”,即感兴趣的区域.实际上,它是IPL/IPP(这两个是Inter的库)结构IplR ...
- OpenCV Cut Image via ROI 根据兴趣区域剪裁图片
我们在使用OpenCV时,有时候需要对现有图片剪裁,比如只需要一个小窗口中的内容,那么我们可以通过OpenCV的兴趣区域 Region of Interest (ROI) 来很轻易的实现,操作也很简单 ...
- 基于OpenCV实现对图片及视频中感兴趣区域颜色识别
基于OpenCV实现图片及视频中选定区域颜色识别 近期,需要实现检测摄像头中指定坐标区域内的主体颜色,通过查阅大量相关的内容,最终实现代码及效果如下,具体的实现步骤在代码中都详细注释,代码还可以进一步 ...
- opencv感兴趣区域ROI
addWeighted //显示原图 Mat src = imread("data/img/1.jpg"); imshow("src",src); //显示lo ...
随机推荐
- MongoDB之二基础入门(安装启动)
mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”. 一. 下载 上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了 ...
- 在FOR中使用close window,循环次数大于1就会报异常
在FOR循环中执行以下动作: 场景:1.打开页面A, 2.点击A中的链接打开新的window, 3.将driver切换到新window, 4.close window 5.再切换到页面A 时出异 ...
- 理解public,protected 以及 private
经常看到在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂.我们首先要明白下面几点. 1.类的一个特征就是封装,public和private作用 ...
- google学术反向代理及IPV6免流量上网【教育网BUPT】
google反向代理 google https://awk.so/ 学术反向代理 https://awk.so/scholar/?hl=zh-CN 2015年1.1号开始流量计费,2元/G 无VPS用 ...
- oracle spfile和pfile文件
pfile(Parameter File)从oracle8i开始使用,在oracle9i中也可以用.它以文本文件的形式存在,可以用vi等编辑器对 其中数据库参数进行修改.文件格式为initSID.or ...
- 安装mysql-5.7.9-winx64
1.mysql-5.7.9-winx64.zip下载 官方网站下载地址:http://dev.mysql.com/downloads/mysql/5.7.html 2.解压到D:\MySqlDataB ...
- gtest框架使用
gtest文档说明: 由于公司单元测试的需要,自己花了大半天时间下载了一个gtest框架,使用了一些测试例子,总览了coderzh的玩转gtest测试框架,又看了几篇gtest博客,写下了以下内容,作 ...
- JQuery事件处理的注意事项
1.jQuery 名称冲突 jQuery 使用 $ 符号作为 jQuery 的简介方式. 某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号. jQuery 使用 ...
- 第一个android程序所遇到问题
1.工程package的命名空间与activity的命名空间不一致,导致setcontentview找不到layout文件 2.增加Button等控件后,Java.R中id必须在删除现有Java.R文 ...
- 使用 StoryBoard 的时候加入用户引导页面
如果想让一个APP加上引导页面是一个非常完美的举动 但是,总会遇到一些问题 (不要忘记在APDelegate里面加上用户引导页面的头文件和程序启动时的第一个页面哦) 情况一:纯代码 判断是否是第一次启 ...