cvSetMouseCallback使用

void cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse, void* param=NULL );

window_name 回掉函数需要注册到的窗口,即产生事件的窗口

on_mouse 在注册窗口点击鼠标时,执行的回掉函数

param 用于传递到回掉函数的参数

#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <cxcore.h>
static unsigned int gPosition = 0;
static IplImage *src = NULL;
static IplImage *dst = NULL;
static CvPoint cvLeftAxis={-1,-1};
static CvPoint cvRightAxis={-1,-1};
static CvFont font;
static void cvOnMouseCallBack(int event,int x,int y,int flags,void *param)
{
    switch(event)
    {
           case CV_EVENT_LBUTTONDOWN:
        cvLeftAxis.x = x;
        cvLeftAxis.y = y;
        break;  
        case CV_EVENT_MOUSEMOVE:
        cvRightAxis.x = x;
        cvRightAxis.y = y;
        break;  
            case CV_EVENT_LBUTTONUP:        
        cvSetImageROI(src,cvRect(cvLeftAxis.x,cvLeftAxis.y,cvRightAxis.x,cvRightAxis.y));
        dst = cvCreateImage(cvGetSize(src),src->depth,src->nChannels);
        cvCopy(src,dst,NULL);
        cvNamedWindow("DstImage",1);        
        cvShowImage("DstImage",dst);
        cvResetImageROI(src);
        cvRectangle(src,cvLeftAxis,cvRightAxis,cvScalar(0,125,12,125),1,8,0);
        cvShowImage("SrcImage",src);
        break;   
        default:break;
    }

}
int main(int argv,char **argc)
{
    
    if(argv==2&&(src = cvLoadImage(argc[1],1)))
    {                
        cvNamedWindow("SrcImage",1);
        cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX,1,1,1,2,8);
        cvSetMouseCallback("SrcImage",cvOnMouseCallBack,NULL);            
        cvShowImage("SrcImage",src);    
        cvWaitKey(0);        
        cvReleaseImage(&src);
        cvReleaseImage(&dst);
        cvDestroyAllWindows();
    }
    return 0;
}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值