// opencv2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <highgui.h> #include <cv.h> #include <iostream> using namespace std; void main( ) { IplImage* src_img=cvLoadImage("放鸽子女神.jpg",-1); //读入图像 IplImage* dst_img; //定义目标图像头; CvRect ROI_rect_src; //源图像ROI的位置以及大小 CvRect ROI_rect_dst; //目标图像的ROI cvNamedWindow("src_img",CV_WINDOW_AUTOSIZE); cvMoveWindow("src_img", 200, 200); // 设置源图像输出的窗口位置 cvShowImage("src_img",src_img); //输出源始图像未设置ROI区域 cvWaitKey(800); //cvSetImageROI函数基于给定的矩形设置感兴趣区域 // cvShowImage函数将只会显示 ROI指定区域 ROI_rect_src.x=0; ROI_rect_src.y=0; ROI_rect_src.width=120; ROI_rect_src.height=100; cvSetImageROI(src_img, ROI_rect_src); cout<<"输出原图像的ROI区域"<<endl; cout<< (src_img->roi->xOffset) <<" "<< (src_img->roi->yOffset) <<endl; cout<< (src_img->roi->width) <<" "<< (src_img->roi->height) <<endl<<endl; cvShowImage("src_img",src_img); //输出设定ROI后的原始图像 //------------ 函数 cvCloneImage实现图像的完整拷贝包括头、ROI和数据 --------------- dst_img=cvCloneImage(src_img); //-----------函数cvGetImageROI得到图像的ROI区域--------------------------- ROI_rect_dst=cvGetImageROI(dst_img); 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_img",CV_WINDOW_AUTOSIZE); cvMoveWindow("dst_img", 400, 200); //设置目标图像输出的窗口位置 cvShowImage("dst_img",dst_img); //显示图像 cvWaitKey(800); cvResetImageROI(dst_img); //释放目标图像的ROI cvShowImage("dst_img",dst_img); //显示释放图像的ROI的源图像 cvWaitKey(0); cvReleaseImage(&src_img); //释放图像 cvReleaseImage(&dst_img); }