#include "cv.h"
#include "highgui.h"
voidmy_mouse_callback(int ievent, int x, int y, int flags, void*param);
CvRect box;
bool drawing_box = false;
void draw_box(IplImage*img, CvRect rect){
cvRectangle(img,
cvPoint(box.x, box.y),
cvPoint(box.x+box.width, box.y+box.height),
cvScalar(0xff, 0x00, 0x00));
}
int main(){
box = cvRect(-1, -1, 0, 0);
IplImage* image = cvCreateImage(cvSize(200, 200),IPL_DEPTH_8U, 3);
cvZero(image);
IplImage* temp = cvCloneImage(image);
cvNamedWindow("Box Example");
cvSetMouseCallback("BoxExample", my_mouse_callback, (void*)image);
while(1){
cvCopyImage(image, temp);
if(drawing_box){
draw_box(temp,box);
}
cvShowImage("Box Example",temp);
if(cvWaitKey(15)== 27) break;
}
cvReleaseImage(&image);
cvReleaseImage(&temp);
cvDestroyWindow("Box Example");
return0;
}
voidmy_mouse_callback(int ievent, int x, int y, int flags, void*param){
IplImage* image = (IplImage*)param;
switch(ievent){
case CV_EVENT_MOUSEMOVE:{
if(drawing_box){
box.width= x - box.x;
box.height= y - box.y;
}
}
break;
caseCV_EVENT_LBUTTONDOWN:{
drawing_box =true;
box =cvRect(x, y, 0, 0);
}
break;
caseCV_EVENT_LBUTTONUP:{
drawing_box =false;
if(box.width< 0){
box.x+= box.width;
box.width*= -1;
}
if(box.height< 0){
box.y+= box.height;
box.height*= -1;
}
draw_box(image,box);
}
break;
}
}
例4-1 用鼠标在窗口中画方形
最新推荐文章于 2020-11-22 13:26:04 发布