opencv 图片ROI读取



// 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); 

 }


你可能感兴趣的:(opencv 图片ROI读取)