在图片上双击过的位置绘制一个 圆圈

鼠标事件就是和鼠标有关的,比如左键按下,左键松开,右键按下,右键松开,双击右键等等。

我们可以通过鼠标事件获得与鼠标对应的图片上的坐标。我们通过以下函数来调用查看所有鼠标事件。

  1. events=[i for i in dir(cv2) if 'EVENT'in i]
  2. print events
所有的鼠标事件

我们来是这写一下这个函数,第一步还是调用库

  1. import cv2
  2. import  numpy as np

调用鼠标回调函数

  1. def draw_circle(event,x,y,flags,param):

这个函数有5个参数:鼠标事件名称,坐标是双击时鼠标的位置,我没看懂flags,param是啥意思,不敢误人子弟。(希望有心人教教我)

  1. if event==cv2.EVENT_LBUTTONDBLCLK:

如果这个事件是左键双击事件

  1. cv2.circle(img,(x,y),100,(255,0,0),-1)

那么画一个圆,昨天说过有关cv2.circle的参数,今天不再赘述。

  1. img=np.zeros((512,512,3),np.uint8)

这是创造一个空的黑色环境,昨天也讲过,记的复习哦!

  1. cv2.namedWindow('shuhangjihuayuan')

命名窗口为shuangjihuayuan

  1. cv2.setMouseCallback('shuangjihuayuan',draw_circle)

(创建图像与窗口并将窗口)与回调函数绑定

然后就是显示出来就好啦

  1. while(1):
  2. cv2.imshow('shuangjihuayuan',img)
  3. if cv2.waitKey(20)&0xFF==27:
  4. break

然后销毁窗口

  1. cv2.destroyAllWindows()
运行结果

所有代码来啦

# -*- coding:utf-8 -*-
"""
Created on Sun Dec 31 05:07:11 2016

@author: Y

"""
import cv2
import numpy as np

def draw_circle(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDBLCLK:

cv2.circle(img,(x,y),100,(255,0,0),-1)

img=np.zeros((512,512,3),np.uint8)
cv2.namedWindow('shuangjihuayuan')

cv2.setMouseCallback('shuangjihuayuan',draw_circle)

while(1):
cv2.imshow('shuangjihuayuan',img)

if cv2.waitKey(20)&0xFF==27:
break
cv2.destroyAllWindows()

天色朦朦亮,早起做运动啦!那条禁忌之路,充斥了太多人性的弱点,我本不该踏进一步 。 既然选择了,那就义无反顾的走下去吧,青春不执著,以后又该如何呢?加油,兄弟姐妹们!我是Y,欢迎大家在下面留言!

Opencv处理鼠标事件-OpenCV步步精深的更多相关文章

  1. Opencv稍微高级点的鼠标事件-OpenCV步步精深

    今天我们要来点稍微高级的东西.在我们按下鼠标时可以画矩形,而我们按下键盘m键时,切换到画圆的模式,再按下m键,回到画矩形模式. 一起来写下代码,首先当然还是调用库 import cv2 import ...

  2. [opencv]调用鼠标事件执行grabcut算法实现阈值分割

    #include<iostream> #include <opencv2/opencv.hpp> #include <math.h> using namespace ...

  3. Opencv函数setMouseCallback鼠标事件响应

    用户通过鼠标对图像视窗最常见的操作有: 1. 左键单击按下 2. 左键单击抬起 3. 左键按下拖动 4. 鼠标指针位置移动 单次单击操作响应事件及顺序 Opencv中setMouseCallback( ...

  4. opencv鼠标事件

    #include <opencv2\opencv.hpp> using namespace cv; struct mouse_para { cv::Mat org; cv::Mat img ...

  5. opencv入门系列教学(四)处理鼠标事件

    一.鼠标事件的简单演示 opencv中的鼠标事件,值得是任何与鼠标相关的任何事物,例如左键按下,左键按下,左键双击等.我们先来看看鼠标事件有哪些,在python中执行下面代码: import cv2 ...

  6. Opencv step by step - 鼠标事件

    鼠标事件有下面几种(没有滚轮事件,比较遗憾): #define CV_EVENT_MOUSEMOVE 0 滑动 #define CV_EVENT_LBUTTONDOWN 1 左键点击 #define ...

  7. Opencv下图像对鼠标事件的响应

    直接上代码: //////////////////////////////////////////////////////////////////////// // // 该程序从文件中读入一幅图像, ...

  8. 如何用OpenCV跟踪鼠标操作

    转载:如何用OpenCV跟踪鼠标操作 http://blog.skyoung.org/2014/05/01/how-to-track-mouse/ 在视频第一帧手动标记出目标的位置是在线视觉跟踪中最基 ...

  9. opencv对鼠标的响应

    #include <cv.h> #include <highgui.h> #include <stdio.h>   #pragma comment(lib,&quo ...

随机推荐

  1. List,map,Set区别

    List按对象进入的顺序保存对象,不做排序或编辑操作.Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List).Map同样 ...

  2. my new start

    my new start in blog csdn : today i formally migrate my personal technical blog from sina to here in ...

  3. 基于JZ2440开发板编写bootloader总结(一)

    凡走过必留下痕迹,学点什么都会有用的. 本系列博文总结了自己在学习嵌入式Linux编程过程中的收获,若有错误,恳请指正,谢谢! --参考教材韦东山系列教材 bootloader 是一个用于启动linu ...

  4. 201521123017 《Java程序设计》第7周学习总结

    1. 本周学习总结 2. 书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 1.2 解释E remove(int index)源代码 1.3 结合1. ...

  5. Python的变量参数

  6. 201521123114 《Java程序设计》第10周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 1. 创建线程方式: 定义Thread的子类 定义实现Runnable接口的类,实现run() 2. 调用s ...

  7. 201521123118《java程序与设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 1. finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中fi ...

  8. hadoop2.x的变化

    HDFS Federation(HDFS联邦) HDFS有两个主要层: Namespace 由目录.文件和块组成:支持所有命名空间对文件和目录的操作. Block Storage Service 由B ...

  9. Java http请求和调用

    关于http get和post请求调用代码以及示例. 参考:http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html http请求 ...

  10. 一款简单而不失强大的前端框架——【Vue.js的详细入门教程①】

    ↓— Vue.js框架魅力 —↓ 前言       Vue.js 是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.V ...