您的位置:首页 > 运维架构

OpenCV 鼠标响应函数 ,用鼠标选中一块图像区域,然后计算选中的ROI区域的统计直方图

2014-04-25 21:56 375 查看
OpenCV 鼠标响应函数 ,用鼠标选中一块图像区域,然后计算选中的ROI区域的统计直方图

运行的时候,在弹出的图像中按下鼠标左键,拖动鼠标,拉出一块矩形区域,然后松开左键,则图像区域就被选中

鼠标响应函数:

static void onMouse( int event, int x, int y, int, void* )

{

if( selectObject ) //鼠标左键被按下后,该段语句开始执行

{ //按住左键拖动鼠标的时候,该鼠标响应函数

//会被不断的触发,不断计算目标矩形的窗口

selection.x = MIN(x, origin.x);

selection.y = MIN(y, origin.y);

selection.width = std::abs(x - origin.x);

selection.height = std::abs(y - origin.y);

selection &= Rect(0, 0, image.cols, image.rows);

}

switch( event )

{

case CV_EVENT_LBUTTONDOWN:

origin = Point(x,y);

selection = Rect(x,y,0,0);

selectObject = true; //当在第一帧按下鼠标左键后,被置为true,拖动鼠标,开始选择目标的矩形区域

break;

case CV_EVENT_LBUTTONUP:

selectObject = false;//直到鼠标左键抬起,标志着目标区域选择完毕。selectObject被置为false

if( selection.width > 0 && selection.height > 0 )

calculateHist = 1; //当在第一帧用鼠标选定了合适的目标跟踪窗口后,calculateHist的值置为 1

cout<<"选中的矩形区域为: "<<selection<<endl;

break;

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: