前面说了一堆,也不知道啥用,感觉也没说清楚,可能确实需要一些例子来显性表示一下,或者他们在当初出版书籍针对的人群已经有了对图像的基本认识,然而自己还是没有建立起来,往后看看吧,希望能比较清楚的自己处理一些图像,知道一些如是能对某个像素的某个通道的值进行改变那么很多问题就变得简单,我想,开始的例子应该也是这里,但是没有所见即所得的即触感,感觉……很生硬。

例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感兴趣区域的更多相关文章

  1. opencv —— copyTo 设置与操作感兴趣区域(ROI)

    感兴趣区域:ROI 对感兴趣区域进行的一系列操作,相当于直接在原图相应部分进行操作. Mat imageROI = srcImage(Rect(0,0,dstImage.cols, dstImage. ...

  2. opencv探索之路(十二):感兴趣区域ROI和logo添加技术

    在图像处理领域,有一个非常重要的名词ROI. 什么是ROI? 它的英文全称是Region Of Interest,对应的中文解释就是感兴趣区域. 感兴趣区域,就是我们从图像中选择一个图像区域,这个区域 ...

  3. opencv——感兴趣区域(ROI)的分析和选取[详细总结]

    引言 在利用OpenCV对图像进行处理时,通常会遇到一个情况,就是只需要对部分感兴趣区域进行处理.因此,如何选取感兴趣区域呢?(其实就是"抠图"). 在学习opencv的掩码运算后 ...

  4. 获取图片中感兴趣区域的信息(Matlab实现)

    内容提要 如果一幅图中只有一小部分图像你感兴趣(你想研究的部分),那么截图工具就可以了,但是如果你想知道这个区域在原图像中的坐标位置呢? 这可是截图工具所办不到的,前段时间我就需要这个功能,于是将其用 ...

  5. OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道

    11     绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...

  6. [zt] ROI (Region of Interest) 感兴趣区域 OpenCV

    在以前介绍IplImage结构的时候,有一个重要的参数——ROI.ROI全称是”Region Of Interest”,即感兴趣的区域.实际上,它是IPL/IPP(这两个是Inter的库)结构IplR ...

  7. OpenCV Cut Image via ROI 根据兴趣区域剪裁图片

    我们在使用OpenCV时,有时候需要对现有图片剪裁,比如只需要一个小窗口中的内容,那么我们可以通过OpenCV的兴趣区域 Region of Interest (ROI) 来很轻易的实现,操作也很简单 ...

  8. 基于OpenCV实现对图片及视频中感兴趣区域颜色识别

    基于OpenCV实现图片及视频中选定区域颜色识别 近期,需要实现检测摄像头中指定坐标区域内的主体颜色,通过查阅大量相关的内容,最终实现代码及效果如下,具体的实现步骤在代码中都详细注释,代码还可以进一步 ...

  9. opencv感兴趣区域ROI

    addWeighted //显示原图 Mat src = imread("data/img/1.jpg"); imshow("src",src); //显示lo ...

随机推荐

  1. 初次接触Object对象变量

    Object 变量存储为 32 位(4 个字节)的地址形式,其为对象的引用.利用 Set 语句,声明为 Object 的变量可以赋值为任何对象的引用. 第一次注意到还有个数据类型,帮助文件里只有上面这 ...

  2. 卡尔曼滤波器【Kalman Filter For Dummies】

    搬砖到此: A Quick Insight     As I mentioned earlier, it's nearly impossible to grasp the full meaning o ...

  3. C# Debug与release之间的一些小差异

    如果代码声明了一个变量,后面却没有用到, 生成方式debug模式下,这个变量的值存在,调试过程中是可以看到的, 生成方式release模式下,编译时经过了优化,这个值在调试过程就看不到了

  4. Android Studio工程导入另一个工程作为lib

    简单视频应用开发时,使用Vitamio作为视频解码库,官方建议直接以工程作为lib方便升级,将该工程导入到项目时不知道该怎么做,参考了下面的博客,这里存档标记一下. 参考:导入一个Android St ...

  5. BNUOJ-26586 Simon the Spider 最小生成树+枚举

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=26586 题意:给一个图,每条边有一个权值.要你求选择一棵树,权值和为sum,然后在树上选择 ...

  6. HDU-4608 I-number 枚举

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4608 直接暴力枚举,没什么好说的.... //STATUS:C++_AC_765MS_740KB #i ...

  7. angularjs 中ie兼容性的问题收集

    今天在项目中做ie8的兼容的时候,发现angularjs中一些内容这样写有问题,那样写就没有问题了,自己记录一下内容: 如果遇到了ie8中使用$http.post请求不到数据的时候,以下的方法是获取不 ...

  8. Delphi外挂开发网站

    http://cheatengine.org/http://wenku.baidu.com/view/2d5de818964bcf84b9d57b15.html   [delphi外G]http:// ...

  9. rank() | dense_rank() | row_number() over(PARTITION BY sex order by age desc ) 的区别

    1.row_num() over()函数:根据某个字段排序后编号1,2,3.. select *,ROW_NUMBER() over ( order by majorid) as numfrom St ...

  10. 【AwayPhysics学习笔记】:Away3D物理引擎的简介与使用

    首先我们要了解的是AwayPhysics这个物理引擎并不是重头开始写的新物理引擎,而是使用Flascc技术把一个已经很成熟的Bullet物理引擎引入到了Flash中,同时为了让as3可以使用这个C++ ...