概述
//Define out callback which we will install
//for mouse events.
void my_mouse_callback(
int event, int x, int y, int flags, void *param
);
CvRect box;
bool drawing_box = false;
//A little subroutine to draw a box onto an image
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)
);
}
//draw boxs on the screen.
int _tmain(int argc, _TCHAR* argv[]) {
box = cvRect(-1, -1, 0, 0);
IplImage *img = cvCreateImage(
cvSize(200, 200),
IPL_DEPTH_8U,
3
);
cvZero(img);
IplImage *temp = cvCloneImage(img);
cvNamedWindow("Box Example", CV_WINDOW_AUTOSIZE);
//Here is the crucial moment that we actually install
//the callback.Note that we set the value 'param' to
//be the image we are working with so that the callback
//will have the image to edit.
cvSetMouseCallback(
"Box Example",
my_mouse_callback,
(void *)img
);
//The main program loop.Here we copy the working image
//to the 'temp' image, and if the user is drawing,then
//put the currently contemplated box onto that temp image.
//Display the temp image,and wait 15ms for a keystroke.
while(1) {
//cvCopyImage(img, temp);
temp = cvCloneImage(img);
if (draw_box)
draw_box(temp, box);
cvShowImage("Box Example", temp);
if (cvWaitKey(15) == 27)
break;
}
//Be tidy
cvReleaseImage(&img);
cvReleaseImage(&temp);
cvDestroyWindow("Box Example");
return 0;
}
//This is our mouse callback.If the user
//presses the left button,we start a box.
//When the user releases that button,then
//we add the box to the current image.When
//the mouse is dragged(with the button down)
//we resize the box.
void my_mouse_callback(
int event, int x, int y, int flags, void *param) {
IplImage *image = (IplImage *)param;
switch(event) {
case CV_EVENT_MOUSEMOVE: {
if (drawing_box) {
box.width = x - box.x;
box.height = y - box.y;
}
}
break;
case CV_EVENT_LBUTTONDOWN: {
drawing_box = true;
box = cvRect(x, y, 0, 0);
}
break;
case CV_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;
}
}
最后
以上就是忧心大叔为你收集整理的draw rectangle的全部内容,希望文章能够帮你解决draw rectangle所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复