例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 ...
随机推荐
- 访问WEB-INF目录中的JSP文件
方法1:本来WEB-INF中的jsp就是无法通过地址栏访问的.所以安全.如果说你要访问这个文件夹中的jsp文件需要在项目的web.xml文件中去配置servlet格式差不多的配置就ok了.如下: 访问 ...
- json解析之jackson ObjectMapper
Json解析常用的有fastjson和jackson,性能上网上有不少的对比,说是fastjson比较好,今天先整理一下jackson的东西,后面再发一个fastjson的. jackson是spri ...
- Flash AIR14导出ipa到Mac上的iOS模拟器测试
没错!你没看错!俺这篇博客就是关于Flash AIR的! ----------------无聊的分割线------------------ 朋友最近学习Flash AIR for iOS开发,想找我帮 ...
- [LeetCode]LRU Cache有个问题,求大神解答【已解决】
题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- 安装mysql-5.7.9-winx64
1.mysql-5.7.9-winx64.zip下载 官方网站下载地址:http://dev.mysql.com/downloads/mysql/5.7.html 2.解压到D:\MySqlDataB ...
- Codeforces Round #105 (Div. 2) ABCDE
A. Insomnia cure 哎 只能说英语太差,一眼题我看了三分钟. 题意:给5个数k, l, m, n 和 d,求1~d中能被k, l, m, n 至少一个整除的数的个数. 题解:…… 代码: ...
- homework-05 服务器与客户端
首先非常抱歉第三次和第四次作业我没交上来,不想找借口强调原因,但是这两次作业我一定会补上,到时候会@助教.谢谢 回到这次作业! 这次作业邹老师没说博客的格式,所以在这里就没有什么回答问题的东西了.这次 ...
- 浅谈iOS中MVVM的架构设计与团队协作
说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...
- ASP.NET MVC中防止跨站请求攻击(CSRF)
转载 http://kevintsengtw.blogspot.co.nz/2013/01/aspnet-mvc-validateantiforgerytoken.html 在 ASP.NET M ...
- Android开发中常用的Eclipse快捷键
关闭所有窗口Ctrl + Shift + W 关闭所有已打开的编辑窗口 重命名Alt + Shift + R 文件或变量重命名(先选中文件或变量再同时按下快捷键) 快速引包Ctrl + Shi ...