//使用到的函数原型:
// 1、 void cvSetImageROI(IplImage* image,CvRect rect);
// 2、IplImage* cvCloneImage( const IplImage* image );
//收获:
#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>
using namespace std;
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
int main()
{
const char * m_PicName = "华山论剑.jpg";
const char * m_RoiPicName = "华山论剑.jpg";
IplImage * m_PPic = cvLoadImage( m_PicName , CV_LOAD_IMAGE_UNCHANGED );
//载入检测
if ( 0 == m_PPic )
{
cout<<"载入图片失败!"<<endl;
return -1;
}
IplImage * m_PPicRoi = NULL;
CvRect ROI_rect_src;
CvRect ROI_rect_Roi;
cvNamedWindow( m_PicName );
cvMoveWindow( m_PicName , 200 , 200 );
cvShowImage( m_PicName , m_PPic );
cvWaitKey( 800 );
ROI_rect_src.x = 500;
ROI_rect_src.y = 500;
ROI_rect_src.width = 1200;
ROI_rect_src.height = 1200;
cvSetImageROI( m_PPic , ROI_rect_src );
cvShowImage( m_PicName , m_PPic );
cvWaitKey( );
m_PPicRoi = cvCloneImage( m_PPic );
cvNamedWindow( m_RoiPicName );
cvMoveWindow( m_RoiPicName , 400 , 200 );
cvShowImage( m_RoiPicName , m_PPicRoi );
cvWaitKey( );
cvResetImageROI( m_PPicRoi );
cvShowImage( m_RoiPicName , m_PPicRoi );
cvWaitKey( );
cvReleaseImage( &m_PPic );
cvDestroyWindow( m_RoiPicName );
cvReleaseImage( &m_PPicRoi );
cvDestroyWindow( m_PicName );
cvReleaseImage( &m_PPic );
return 0;
}
//时间:2015年6月1日
//功能:设置一个或者多个ROI,并进行显示。
//voidpush_back(const_Ty&_X) 在vector类中作用为在vector尾部加入一个数据
// {
// insert(end(),_X);
// }
//template<typename T>
// explicit vector(); // 默认构造函数,vector对象为空
// explicit vector(size_type n, const T& v = T()); // 创建有n个元素的vector对象
// vector(const vector& x);
// vector(const_iterator first, const_iterator last);
//
//
#include <iostream>
#include <vector>
#include "opencv2/opencv.hpp"
using namespace std;
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
int main()
{
const char * M_PicName = "华山论剑.jpg"; //自己定义的变量全部以M_开头
const char * M_PicROIName = "华山论剑ROI.jpg";
IplImage * M_Pic = cvLoadImage( M_PicName , CV_LOAD_IMAGE_UNCHANGED );
if ( 0 == M_Pic )
{
cout<<"载入图像失败!"<<endl;
return -1;
}
IplImage * M_ROIPic = NULL;
CvRect ROI_M_Pic;
CvRect * ROI_M_pPic;
ROI_M_Pic.height = 500;
ROI_M_Pic.width = 500;
ROI_M_Pic.x = 500;
ROI_M_Pic.y = 500;
cvSetImageROI( M_Pic , ROI_M_Pic );
cvNamedWindow ( "华山论剑" );
cvShowImage ( "华山论剑", M_Pic );
cvWaitKey();
cvDestroyWindow("华山论剑");
vector< CvRect > ROI_M_Pics;
for (size_t i=0 ; i < 4 ; i++)
{
ROI_M_Pics . push_back( cvRect(i*50 , i*50 , 500 , 500) ); //中文标点符号要注意!!
}
for(int i = 0; i < ROI_M_Pics.size(); i++)
{
cvSetImageROI( M_Pic , ROI_M_Pics[i] );
cvNamedWindow ( "华山论剑" );
cvShowImage ( "华山论剑", M_Pic );
cvWaitKey();
cvDestroyWindow("华山论剑");
}
cvReleaseImage( &M_Pic );
return 0;
}