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

例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. Android视图SurfaceView的实现原理分析

    http://blog.csdn.net/luoshengyang/article/details/8661317

  2. python 遇到 syntaxerror: non-ascii character '/xd6' in file 我 教你解决 (python问题)(转)

    遇到标题上的问题,按照我的解决广方案来吧 ===================================== (一) 用记事本创建一个文件ChineseTest.py,默认ANSI: s = ...

  3. 理解public,protected 以及 private

    经常看到在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂.我们首先要明白下面几点. 1.类的一个特征就是封装,public和private作用 ...

  4. 【原】Storm 守护线程容错机制

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

  5. 【翻译】运行于x86机器上的FreeBSD的PCI中断

    来源 http://people.freebsd.org/~jhb/papers/bsdcan/2007/article/article.html 摘要 在拥有多个独立设备的计算机里一个重要的元素是一 ...

  6. HDU 1698 Just a Hook 区间更新 lazy标记

    lazy标记 #include <iostream> #include <cstdio> #include <cstring> #include <sstre ...

  7. Bzoj 4556: [Tjoi2016&Heoi2016]字符串

    4556: [Tjoi2016&Heoi2016]字符串 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 92[Sub ...

  8. 不适用临时空间,交换变量a和b

    方法1: a = a + b; b = a - b; a = a - b; 方法2: a ^= b; b ^= a; a ^= b; 方法3: a = a * b; b = a / b; a = a  ...

  9. 转载Sql 获取数据库所有表及其字段名称,类型,长度

    转载原地址 http://www.cnblogs.com/Fooo/archive/2009/08/27/1554769.html SELECT (case when a.colorder=1 the ...

  10. Keil MDK 5.0发布了

          从上图可以看出MDK500.EXE (294,308K)分成了两部分,MDK核和software packs.MDK核跟以往一样分成四个部分,编辑器,编译器,包安装,调试跟踪.此版soft ...