简单地画图程序

//时间:2015年7月21日
//修改:由于昨天时间比较匆忙,今日将程序中的bug和语句理解进行注释

//附:由于最近放暑假一些事情耽误,所以这段时间没有更新程序

//时间:2015年7月20日
//功能:实现简单地画板功能
//函数:void cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse, void* param=NULL );
//      获取鼠标响应,
//参数说明:window_name 窗口的名字。
//          on_mouse 指定窗口里每次鼠标事件发生的时候,被调用的函数指针。
//附:由于最近放暑假一些事情耽误,所以这段时间没有更新程序

#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <stdlib.h>


IplImage * m_pic = 0 , * m_pic1 = 0;
CvPoint m_prev_pt = {1 , -1};


void m_on_mouse(int m_event , int m_x , int m_y , int m_flags , void* )
{
if (!m_pic)
{
return;
}
if (m_event == CV_EVENT_LBUTTONUP||(!m_flags))     //当放开鼠标左键或者鼠标左键没摁下时复原初始点
{
m_prev_pt = cvPoint(-1 , -1);
//printf("%d %d %d\n" , m_flags , m_prev_pt.x , m_prev_pt.y);
}
else if (m_event == CV_EVENT_LBUTTONDOWN)       //当鼠标左键摁下时记录摁下点的位置
{
m_prev_pt = cvPoint(m_x , m_y);
//printf("%d %d %d\n" , m_flags , m_prev_pt.x , m_prev_pt.y);
}
else if(m_event == CV_EVENT_MOUSEMOVE && (m_flags&CV_EVENT_FLAG_LBUTTON))    //当鼠标摁下左键并且移动时
{
CvPoint m_pt = cvPoint(m_x , m_y);
//printf("%d %d %d\n" , m_flags , m_prev_pt.x , m_prev_pt.y);
if(m_prev_pt.x <0)
{
m_prev_pt = m_pt;
}
cvLine(m_pic , m_prev_pt , m_pt , cvScalarAll(255) , 3 , 8 , 0 );
m_prev_pt = m_pt;
cvShowImage("m_pic",m_pic);
}




}


int main()
{
char * filename = "华山.jpg";

if( ( m_pic = cvLoadImage(filename , -1) ) == 0)
{
return 0 ;
}
cvNamedWindow("m_pic",1);
m_pic1 = cvCloneImage( m_pic );
cvShowImage( "m_pic" , m_pic );
cvSetMouseCallback( "m_pic" , m_on_mouse , 0 );      //调用鼠标回调函数m_on_mouse
while(true)
{
int c = cvWaitKey(0);
if((char)c == 27)
{
break;
}
if((char)c == 'r')
{
cvCopy(m_pic , m_pic1);
cvShowImage("m_pic" , m_pic);
}
}
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值