欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

OpenCV:图像的感兴趣区域(ROI)

程序员文章站 2023-12-25 12:04:51
...

功能:
基于给定的矩形设置图像的ROI(感兴趣区域,region of interesting)
格式:
void cvSetImageROI(IplImage* image,CvRect rect);
参数
image 图像头,待处理图像
rect ROI 矩形
说明:
如果ROI为NULL并且参数rect的值不等于整个图像,则ROI被分配。大多数OpenCV函数都支持ROI,并将它作为一个独立图像进行处理,所有像素坐标都是从ROI的左上角或者左下角(基于图像结构)开始计算的。
下面用一段代码来说明cvSetImageROI函数:
#include "cv.h"
#include "highgui.h"
#include "stdio.h"
int main()
{
IplImage *img=cvLoadImage("1.jpg");
IplImage *img1=cvLoadImage("2.jpg");
cvSetImageROI(img1,cvRect(0,0,256,256));//设置img1的ROI区域
cvResize(img, img1);//缩放img图像,并将数据拷贝到img1
cvResetImageROI(img1);//这句是必须的,在img1的ROI区域显示img
cvNamedWindow("img1",1);
cvShowImage("img1",img1);
cvWaitKey(0);
cvDestroyAllWindows();
return 0;
}

cvResize(img,img1)缩放img图像,并拷贝到img1中
在提取更兴趣区域时,还可以用cvCopy(src,dst)或者cvCopyImage(src,dst)代替,但是copy就没有缩放功能


例子2
#include <highgui.h>
#include <cv.h>
#include <iostream.h>
void main()
{
IplImage * src=cvLoadImage("baboon.jpg",-1);
IplImage * dst;
CvRect roi_rect_src;
CvRect roi_rect_dst;
cvNamedWindow("src",CV_WINDOW_AUTOSIZE);
cvMoveWindow("src",200,200);    //设置窗口输出位置
cvShowImage("src",src);
cvWaitKey(0);

//基于给定的矩形设置感兴趣区域ROI
roi_rect_src.x=125;
roi_rect_src.y=300;
roi_rect_src.width=240;
roi_rect_src.height=200;
cvSetImageROI(src,roi_rect_src);
cout<<"输出源图像的ROI区域:"<<endl;
cout<<(src->roi->xOffset)<<" "<<(src->roi->yOffset)<<endl;
cout<<(src->roi->width)<<" "<<(src->roi->height)<<endl;
cvShowImage("src",src);//这时候只显示ROI区域
cvWaitKey(0);

dst=cvCloneImage(src);//完整复制包括头,ROI和数据
roi_rect_dst=cvGetImageROI(dst);//获得ROI区域
cout<<"输出目标图像的ROI区域:"<<endl;
cout<<roi_rect_dst.x<<" "<<roi_rect_dst.y<<endl;
cout<<roi_rect_dst.width<<" "<<roi_rect_dst.height<<endl;
cvNamedWindow("dst",CV_WINDOW_AUTOSIZE);
cvMoveWindow("dst",600,200);
cvShowImage("dst",dst);
cvWaitKey(0);
cvResetImageROI(dst);//释放图像的ROI
cvShowImage("dst",dst);
cvWaitKey(0);
cvReleaseImage(&src);
cvReleaseImage(&dst);
}


其他相关资料链接:
opencv学习之感兴趣区域(ROI)
https://blog.csdn.net/shihz_fy/article/details/41522679
https://www.tuicool.com/articles/2IJNJ3
c++-OpenCV 怎样提取类似方形的区域
https://yq.aliyun.com/wenzhang/show_64527
CvImage类参考手册
http://wiki.opencv.org.cn/index.php/CvImage%E7%B1%BB%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C#CvImage::roi

使用鼠标获取图像感兴趣地矩形区域实现
https://blog.csdn.net/songzitea/article/details/16954057

OpenCV:图像的感兴趣区域(ROI)

参考链接:

http://blog.sina.com.cn/s/blog_7155fb1a01016d6n.html

http://blog.sina.com.cn/s/blog_71fa0df50100pvzv.html

http://blog.sina.com.cn/s/blog_7155fb1a01016d6n.html


上一篇:

下一篇: