鼠标绘图

转载 2012年03月29日 19:03:14
#ifdef _CH_
#pragma package <opencv>
#endif

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

IplImage* inpaint_mask = 0;
IplImage* img0 = 0, *img = 0, *inpainted = 0;
CvPoint prev_pt = {-1,-1};

void on_mouse( int event, int x, int y, int flags, void* )
{
    if( !img )
    return;

    if( event == CV_EVENT_LBUTTONUP || !(flags & CV_EVENT_FLAG_LBUTTON) )
    prev_pt = cvPoint(-1,-1);
    else if( event == CV_EVENT_LBUTTONDOWN )
    prev_pt = cvPoint(x,y);
    else if( event == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON) )
    {
        CvPoint pt = cvPoint(x,y);
        if( prev_pt.x < 0 )
        prev_pt = pt;
        cvLine( inpaint_mask, prev_pt, pt, cvScalarAll(255), 5, 8, 0 );
        cvLine( img, prev_pt, pt, cvScalarAll(255), 5, 8, 0 );
        prev_pt = pt;
        cvShowImage( "image", img );
    }
}

int main( int argc, char** argv )
{
    char* filename = argc >= 2 ? argv[1] : (char*)"fruits.jpg";

    if( (img0 = cvLoadImage(filename,-1)) == 0 )
    return 0;

    printf( "Hot keys: \n"
    "\tESC - quit the program\n"
    "\tr - restore the original image\n"
    "\ti or ENTER - run inpainting algorithm\n"
    "\t\t(before running it, paint something on the image)\n" );

    cvNamedWindow( "image", 1 );

    img = cvCloneImage( img0 );
    inpainted = cvCloneImage( img0 );
    inpaint_mask = cvCreateImage( cvGetSize(img), 8, 1 );

    cvZero( inpaint_mask );
    cvZero( inpainted );
    cvShowImage( "image", img );
    cvShowImage( "watershed transform", inpainted );
    cvSetMouseCallback( "image", on_mouse, 0 );

    for(;;)
    {
        int c = cvWaitKey(0);

        if( (char)c == 27 )
        break;

        if( (char)c == 'r' )
        {
            cvZero( inpaint_mask );
            cvCopy( img0, img );
            cvShowImage( "image", img );
        }

        if( (char)c == 'i' || (char)c == '\n' )
        {
            cvNamedWindow( "inpainted image", 1 );
            cvInpaint( img, inpaint_mask, inpainted, 3, CV_INPAINT_TELEA );
            cvShowImage( "inpainted image", inpainted );
        }
    }

return 1;
} 

(C#)GDI+绘图之鼠标移动画图

主要在鼠标按下,鼠标移动,松开鼠标几个事件中编写。using System; using System.Collections.Generic; using System.ComponentModel...
  • Just_Finlay
  • Just_Finlay
  • 2012年11月22日 15:56
  • 2132

python opencv入门 鼠标绘图(4)

内容来自OpenCV-Python Tutorials 自己翻译整理 目标: 学习如何操作鼠标事件 学习cv2.setMouseCallback()函数 简单样例: 首先创建一个鼠标的回调函数,当鼠...
  • tengfei461807914
  • tengfei461807914
  • 2017年03月16日 20:14
  • 1948

C#用鼠标绘图笔记(二)

        在C#用鼠标绘图笔记(一)我写了关于画线的代码实现,下面发一下我基于那个代码实现的用鼠标绘制多段线的方法,因为目前网上关于这种绘制多段线的方法的代码很少,所以,自己发一下,时间仓促,因...
  • clevenhxn
  • clevenhxn
  • 2006年09月01日 09:49
  • 2072

【计算机图形学课程】二.MFC鼠标响应函数模拟画图软件

上一篇文章我们讲述MFC绘制图形的基本函数,包括绘制直线、绘制矩形、绘制椭圆及绘制文字,同时通过绕圆旋转和矩形平移简单的理解了图形学知识。这篇文章我将介绍鼠标响应和键盘响应,通过这些事件让学生实现一个...
  • Eastmount
  • Eastmount
  • 2016年11月20日 01:42
  • 5870

flash as3 鼠标绘图

本文用AS3分别描绘了曲线、直线、圆、椭圆和矩形5种绘制方法,希望能给大家带来帮助! (1):曲线 知识点: 1、添加鼠标监听事件MouseEvent; 2、规定画布大小; 3、moveTo...
  • liangyamin
  • liangyamin
  • 2012年01月19日 23:32
  • 3088

用鼠标实现屏幕绘图

一般说来,在屏幕上绘图,许多朋友首先想到的是先抓取屏幕图形到窗口,然后在窗口中进行绘图,这种思路最大的缺点是,当窗口切换时,会出现明显的闪烁现象(因为屏幕抓图和应用程序窗口再置顶这些操作比较费时),有...
  • lyserver
  • lyserver
  • 2009年04月28日 00:43
  • 1718

利用鼠标实现画图功能 java

public class drawPanel extends JPanel implements MouseListener,MouseMotionListener{ Point start=n...
  • yuge1hao
  • yuge1hao
  • 2014年04月08日 09:10
  • 1717

C在控制台上实现鼠标画图功能

#include #include #include HANDLE hOut; HANDLE hIn; void ClearScreen(void); void DispMousePos(COO...
  • morixinguan
  • morixinguan
  • 2016年10月13日 13:52
  • 1212

MFC鼠标绘图

最近刚开始学习Visual c++6.0 还是菜鸟级别 单击左键,画点 按住左键拖动,画线 单击右键,清除屏幕 改变画框大小,画面重画 // MyProg2bView.cpp : implementa...
  • DuoDuo_smile
  • DuoDuo_smile
  • 2015年04月28日 16:36
  • 613

利用鼠标绘制不规则ROI

转自:http://blog.csdn.net/destiny_1027/article/details/7532789     ROI(Regions Of Interest)区域在实...
  • hcstar
  • hcstar
  • 2016年03月10日 21:54
  • 560
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:鼠标绘图
举报原因:
原因补充:

(最多只允许输入30个字)