《学习OpenCV》书后习题4-3
允许用户在图像中选择一个矩形区域,然后通过按住鼠标按键画一个矩形,当鼠标键放开,高亮显示矩形框。
源代码:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
bool drawing_box=false;
CvRect box;
IplImage* rect_img(IplImage* img)
{
cvRectangle(img,cvPoint(box.x,box.y),cvPoint(box.x+box.width,box.y+box.height),cvScalar(0x00,0x00,0x00));
IplImage* head1=cvCreateImageHeader(cvSize(box.width,box.height),img->depth ,img->nChannels);
head1->origin=img->origin ;
head1->widthStep=img->widthStep;
head1->imageData=img->imageData+box.y *img->widthStep+box.x*img->nChannels;
cvNot(head1,head1);
return img;
}
void mouseHandler(int event,int x,int y,int flags,void* param)
{
IplImage* img0,*img1;
img0=(IplImage*) param;
img1=cvCloneImage(img0); //对副本进行操作
switch( event )
{
case CV_EVENT_MOUSEMOVE:
{
if(drawi