提取出图像中感兴趣的部分,cvSetImageRoi已经过时,更牛逼Rect解决问题
2016-04-27 21:47
363 查看
在做人脸检测的时候,需要从摄像头拍摄视频中把检测到的人脸区域提取出来,网上找了很多博客,发现多数都是在用cvSetImageRoi函数,该函数声明如下: void cvSetImageROI(IplImage* image, CvRect rect),可以看出, 这个函数支持IplImage类,不能使用Mat,所以转换来转换去很麻烦,最后在国外网站(stack overflow)发现了一个用Rect 提取的方法。举个例子来说明: Mat img=imread("D:\\1研究生\\Facial Expression Research\\表情识别\\Database\\Jaffe\\1.tiff",1); Mat roi=img(Rect(0,0,30,30)); //提取的关键就是Rect(0,0,30,30),其中0 ,0表示感兴趣区域的左上角位置,后面的30,30表示感兴趣部分的宽度和高度 Mat img1; roi.copyTo(img1);//将感兴趣区域赋值到img1; namedWindow("gag",1); imshow("gag",img1); 顺便说一下cvSetImageRoi的使用方法: 基于给定的矩形设置图像的ROI(感兴趣区域,region of interesting) 并将它作为 一个独立图像进行处理,所有像素坐标都是从ROI的左上角或者左下角(基于图像结构)开始计算的。 例如:SetImageROI(img1,cvRect(100,100,356,156)),(100,100)表示ROI区域的左上角坐标,356,156分别表示ROI区域的长宽。 之后显示img1图像是只显示ROI标识的一部分,即改变了指针img1,但是它仍旧保留有原来图像的信息,在执行这一句cvResetImageROI(img1);
相关文章推荐
- Windows核心编程之线程终结
- LeetCode Gas Station
- c++第四次实验
- Java ArrayList 内部源码实现
- POJ2965,递归出来的!
- 自定义控件三部曲之绘图篇(十)——Paint之setXfermode(一)
- 第四次C++作业
- Android源码分析之Binder进程间通信一
- C# Socket流数据大小端读写封装
- 次短路和次小生成树、
- 站立会议个人博客9(2016/4/27)
- cf489D. Unbearable Controversy of Being
- 性能调优
- java异常体系2
- 团队项目作业五 - 旅游行业App分析
- PAT-B 1010. 一元多项式求导
- C游戏 简单迷宫游戏开发
- golang + Atom 编程环境搭建
- 广度 / 深度优先搜索
- 将JavaScript 插入网页的方法