#include "cvut.h" //在工程目录下cvut.h、cvutImage.h、cvutMatrix.h、cvutSeq.h、cvutUtil.h
#include "cv.h"
using namespace cvut;
//函数声明:
int choose_rect(char**);
void on_mouse( int , int , int , int , void* );
int clktime=0; //全局变量1 鼠标单击时间变量
CvRect work_rect; //全局变量2 存储矩形区域信息
int main( )
{
char* names[] ={ "./images/Image1.bmp", "./images/Image2.bmp", "./images/Image3.bmp", //子文件夹下的各个图片
"./images/Image4.bmp", "./images/Image5.bmp", "./images/Image6.bmp",
"./images/Image7.bmp", "./images/Image8.bmp", "./images/Image9.bmp",
"./images/Image10.bmp", "./images/Image11.bmp", "./images/Image12.bmp",};
choose_rect(names);
cout<<"done!"<<endl; //显示完成
return 0;
}
//选择图像的矩形区域的函数————————————————
int choose_rect(char** names)
{
extern int clktime;
clktime=1;
IplImage *img=0;
img = cvLoadImage(names[0]); // load image 第一张图像
if(!img)
{
printf("could not load file!");
return -1;
}
cvNamedWindow("mainwin",0);
cvMoveWindow("mainwin",100,50);
cvResizeWindow("mainwin",900,680); //mainwin窗口的缩放
cvShowImage("mainwin",img); //在mainwin窗口显示img
cvSetMouseCallback( "mainwin", on_mouse, 0 );
while(clktime<3) //循环等待(原值为1,on_mouse处理两次增至3跳出)
if(cvWaitKey(10)>=0)
{
goto loop;
}
loop:cvReleaseImage(&img); //矩形区域获取结束
cvDestroyWindow("mainwin");
return 0;
}
///on mouse函数:————————————————————————
// 鼠标单击事件的处理,手动提取矩形区域角点、保存。
void on_mouse( int event, int x, int y, int flags, void* param )
{
//左键按下
if( event==CV_EVENT_LBUTTONUP )
{
cout<<"point(x,y)"<<clktime<<":"<<x<<" "<<y<<endl; //显示角点的位置
extern CvRect work_rect; //全局变量的声明
extern int clktime;
if(clktime==1)
{
work_rect.x = x;
work_rect.y = y;
}
else
{
work_rect.width = x-work_rect.x;
work_rect.height = y-work_rect.y;
}
clktime++; //矩形区域下一点
}
return;
}