opencv 设置roi怎么把一个roi变成制定大小

OpenCV总结_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
OpenCV总结
上传于||暂无简介
大小:682.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢opencv roi 不规则
数据结构操作与运算-CvRect,CvBox2D数据结构 这两个数据结构都是OpenCV,ROI专用的数据结构,ROI,全名的意思就是感兴趣的区域(Region Of Interesting),对于图像来讲,总是有一些物体或是重要的图像是我们必须要做研究,追踪或分析的,物体追踪在图像处理也是很大的一们领域,凡是人脸追踪,汽车追踪,鸟类追踪,或是图像检索都是可以利用ROI的数 ...
本人曰: 最近在做图像处理相关项目.遇到和解决了问题,学习了一些知识.打算在小游戏中实现一个自旋转小地图.需要一个圆形ROI.但是资料中没有找到相关操作.网上遇到一文. 原文地址 A few days ago, a reader asked me about selecting circular ROI using OpenCV. I think such a functi ...
在OpenCV中文论坛上很多人问到这样的问题,如何对图像的不规则区域设置ROI,即设置敏感区域,以用来做相关的图像处理. 我将根据自己的点点经验,在此进行简单的归纳. 对图像的不规则区域设置ROI OpenCV自带的函数cvSetImageROI( IplImage* image, CvRect rect )只能设置矩形的敏感区域,而实际图像处理中遇到的处理对象都是非矩形的 ...
在OpenCV中文论坛上很多人问到这样的问题,如何对图像的不规则区域设置ROI,即设置敏感区域,以用来做相关的图像处理. 我将根据自己的点点经验,在此进行简单的归纳. 对图像的不规则区域设置ROI OpenCV自带的函数cvSetImageROI( IplImage* image, CvRect rect )只能设置矩形的敏感区域,而实际图像处理中遇到的处理对象都是非矩形的 ...
我们在使用OpenCV时,有时候需要对现有图片剪裁,比如只需要一个小窗口中的内容,那么我们可以通过OpenCV的兴趣区域 Region of Interest (ROI) 来很轻易的实现,操作也很简单,首先建立一个新的IplImage图片,大小为你需要剪裁出来的大小,然后建立一个该大小的CvRect变量,用来设定原图片的ROI的范围,然后此时拷贝原图片到新图片,就得到我 ...
在这篇文章里,我们一起学习了在OpenCV中如何定义感兴趣区域ROI,如何使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像混合操作.
一.设定感兴趣区域——ROI(region of interest)
在图像处理领域,我们常常需要设置感兴趣区域(ROI,region of interest), ...
在以前介绍IplImage结构的时候,有一个重要的参数——ROI.ROI全称是”Region Of Interest”,即感兴趣的区域.实际上,它是IPL/IPP(这两个是Inter的库)结构IplROI的实例.IplROI包含xOffset.yOffset.height.width和coi成员变量.其中COI代表channel of interest(感兴趣的通道).RO ...
不规则区域的矩,表示把一个归一化的灰度级图像函数理解为一个二维随机变量的概率密度. 这个随机变量的属性可以用统计特征--矩(Moments)来描述.通过假设非零的像素值表示区域,矩可以用于二值或灰度级的区域描述. Mpq = sigma(i)sigma(j) ip jq f(i,j) 其中x,y,i,j是区域点的坐标(在数字图像中的像素坐标). 令Xc,Yc表示区域重心的坐 ...
一.对图像某一像素临近区域的访问 #include &stdafx.h& void sharpen( const Mat &img,Mat &result) { for(int j = 1;j & img.rows-1;++j) { const uch ...
一.ROI介绍 在OpenCV中我们能够非常方便地获取指定ROI区域的子图像.如果你对图像设置了ROI,那么,Opencv的大多数函数只在该ROI区域内运算(只处理该ROI区域),如果没设ROI的话,就会出来整幅图像. ROI非常有用,例如我们想把图像中的人脸扣出来,进行人脸识别.需要注意的时候,ROI一定在图像内部,而不能超出图像的范围. 对图像设定ROI的函数是: cv ...
opencv的图像及子图像1.x版本与2.x版本的使用方式有很大不同. 1.x版本采用cvCopy或cvSetImageROI, cvCopy, cvResetImageROI的方式实现. 而2.x版本以后,图像用Mat来表示.图像的方法比较多,例如 src.clone() src.copyTo(dst) src.copyTo(dst, mask) dst与src类型相同时 ...
前几天用OpenCV写程序,用到ROI,写篇博客总结一下ROI的相关内容. ROI(region of interest),也就是感兴趣区域,如果你设置了图像了ROI,那么在使用OpenCV的函数的时候,会只对ROI区域操作,其他区域忽略.举个例子: 原图: 现在要将这幅图的蓝色通道加150 如果没有设置ROI,则函数作用在这个图像上,整个图像的所有像素的蓝色通道都会被加上 ...
在进行图像处理时,往往是对ROI区域进行局部处理,利用鼠标选取ROI区域显然可以更加方便.OpenCV选取唯一矩形ROI区域的代码如下:#include &opencv2/core/core.hpp& #include &opencv2/highgui/highgui.hpp& #include &stdio.h& #include &l ...
目录(?)[-] 一设定感兴趣区域ROIregion of interest ROI区域定义的两种方法 二初级图像混合线性混合操作 addWeighted函数代码解析 1读取两幅图像并作错误处理2 进行图像混合加权操作3创建显示窗口显示图像 三综合示例
_毛星云 出品,转载请注明出处.
文章链接: http://blog.csdn.net/poem ...
#include &iostream& #include&opencv2/highgui/highgui.hpp& #include &cv.h& #include &core/types_c.h& void main() { IplImage
创建ROI的几种方法: Mat ROIimage = image(cv::Rect(385,270,logo.cols,logo.rows)); Mat ROIimage = image(cv::Range(270,270+log.rows),cv::Range(385,385+log.cols)); Mat ROIimage = image.rowRange(start, ...
问题:在opencv中,取一幅图像src的子区间roi,在该roi里面分析,得到子区间roi的子区间roi2.如何把子区间里面的roi2的坐标还原到src. 解决:函数在下面给出,相关主函数自行添加 void RoiTest() { char filename[100]; int count=1; M M Rect grinder_test ...
在图像处理领域,感兴趣区域(ROI) 是从图像中选择的一个图像区域,这个区域是你的图像分析所关注的重点.圈定该区域以便进行进一步处理.
使用ROI圈定你想读的目标,可以减少处理时间,增加精度
OpenCV中的相关函数:设置/获取感兴趣区域ROI: void
cvSetImageROI(IplImage* image, CvRect rect); ...
#include &opencv2/opencv.hpp& #include &iostream& int main() { IplImage *img = cvLoadImage(&1.jpg&); IplImage *sub_image1 = nullptr,*sub_image2 = ...
在对图像进行处理过程中,我们经常需要对图像的某个或多个感兴趣区域进行处理.在OpenCV中我们能够非常方便地获取指定ROI区域的子图像.下面这段代码就演示了怎样获取指定单个ROI或多个ROI图像区域. //
一个或多个ROI图像区域 #include &iostream& #include &vector& #include &opencv2 ...您所在的位置: &
对ROI和widthStep的补充
对ROI和widthStep的补充
于仕琪/刘瑞祯 译
清华大学出版社
《学习OpenCV(中文版)》本书由OpenCV发起人所写,站在一线开发人员的角度用通俗易懂的语言解释了OpenCV的缘起和计算机视觉基础结构,演示了如何用OpenCV和现有的自由代码为各种各样的机器进行编程,这些都有助于读者迅速入门并渐入佳境,兴趣盎然地深入探索计算机视觉领域。本节为大家介绍对ROI和widthStep的补充。
对ROI和widthStep的补充
ROI和widthStep在实际工作中有很重要的作用,在很多情况下,使用它们会提高计算机视觉代码的执行速度。这是因为它们允许对图像的某一小部分进行操作,而不是对整个图像进行运算。在OpenCV中 ,普遍支持ROI和widthStep,函数的操作被限于感兴趣区域。要设置或取消ROI,就要使用cvSetImageROI()和cvResetImageROI()函数。如果想设置ROI,可以使用函数cvSetImageROI(),并为其传递一个图像指针和矩形。而取消ROI,只需要为函数cvResetImageROI()传递一个图像指针。void&cvSetImageROI(&IplImage*&image,&CvRect&rect&); &void&cvResetImageROI(&IplImage*&image&);&
为了解释ROI的用法,我们假设要加载一幅图像并修改一些区域,如例3-12的代码,读取了一幅图像,并设置了想要的ROI的x,y,width和height的值,最后将ROI区域中像素都加上一个整数。本例程中通过内联的cvRect()构造函数设置ROI。通过cvResetImageROI()函数释放ROI是非常重要的,否则,将忠实地只显示ROI区域。
例3-12:用imageROI来增加某范围的像素//&roi_add&&&&&&&#include&&#include&&&int&main(int&argc,&char**&argv) &{ &&&&&IplImage*& &&&&&if(&argc&==&7&&&&((src=cvLoadImage(argv[1],1))&!=&0&)) &&&&&{ &&&&&&&&&int&x&=&atoi(argv[2]); &&&&&&&&&int&y&=&atoi(argv[3]); &&&&&&&&&int&width&=&atoi(argv[4]); &&&&&&&&&int&height&=&atoi(argv[5]); &&&&&&&&&int&add&=&atoi(argv[6]); &&&&&&&&&cvSetImage&ROI(src,&cvRect(x,y,width,height)); &&&&&&&&&cvAddS(src,&cvScalar(add),src); &&&&&&&&&cvResetImageROI(src); &&&&&&&&&cvNamedWindow(&"Roi_Add",&1&); &&&&&&&&&cvShowImage(&"Roi_Add",&src&); &&&&&&&&&cvWaitKey(); &&&&&} &&&&&return&0; &}&
使用例3-12中的代码把ROI集中于一张猫的脸部,并将其蓝色通道增加150后的效果如图3-3所示。【45~46】
(点击查看大图)图3-3:在猫脸上用ROI增加150像素的效果
通过巧妙地使用widthStep,我们可以达到同样的效果。要做到这一点,我们创建另一个图像头,让它的width和height的值等于interest_rect的width和height的值。我们还需要按interest_rect起点设置图像起点(左上角或者左下角)。下一步,我们设置子图像的widthStep与较大的interest_img相同。这样,即可在子图像中逐行地步进到大图像里子区域中下一行开始处的合适位置。最后设置子图像的imageDate指针指向兴趣子区域的开始,如例3-13所示。
例3-13:利用其他widthStep方法把interest_img的所有像素值增加1//&Assuming&IplImage&*interest_&and &&//&&CvRect&interest_ &&//&&Use&widthStep&to&get&a&region&of&interest &&// &&//&(Alternate&method) &&// &&IplImage&*sub_img&=&cvCreateImageHeader( &&&&cvSize( &&&&&&&interest_rect.width, &&&&&&&&interest_rect.height &&&&), &&&&interest_img-depth, &&&&interest_img-nChannels &&); &&&sub_img-origin&=&interest_img- &&&sub_img-widthStep&=&interest_img-widthS &&&sub_img-imageData&=&interest_img-imageData&+ &&&&interest_rect.y&*&interest_img-widthStep&&&+ &&&&interest_rect.x&*&interest_img-nC &&&cvAddS(&sub_img,&cvScalar(1),&sub_img&); &&&cvReleaseImageHeader(&sub_img);&
看起来设置和重置ROI更方便一些,为什么还要使用widthStep?原因在于有些时候在处理的过程中,想在操作过程中设置和保持一幅图像的多个子区域处于活动状态,但是ROI只能串行处理并且必须不断地设置和重置。
最后,我们要在此提到一个词-- 掩码或模板,在代码示例中cvAddS()函数允许第四个参数默认值为空:const CvArr* mask=NULL。这是一个8位单通道数组,它允许把操作限制到任意形状的非0像素的掩码区,如果ROI随着掩码或模板变化,进程将会被限制在ROI和掩码的交集区域。掩码或模板只能在指定了其图像的函数中使用。
【责任编辑: TEL:(010)】&&&&&&
关于&&的更多文章
《Swift 开发手册:技巧与实战》分为6 章,第1 章介绍了与iOS 开
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
讲师: 32人学习过讲师: 6人学习过讲师: 72人学习过
《计算机程序设计艺术》系列是被公认为计算机科学领域
这本高阶教程将通过大量示例帮助你精通Hadoop,掌握Ha
本书是在MIT开设概率论入门课程的基础上编写的, 内容
本书是《网管第一课》系列图书中的第一本,是专门针对高校和培训机构编写的,其主要特点是内容细而精、针对性强。书中内容全是经
51CTO旗下网站

我要回帖

更多关于 opencv mat roi的设置 的文章

 

随机推荐