Opencv处理鼠标事件-OpenCV步步精深
在图片上双击过的位置绘制一个 圆圈
鼠标事件就是和鼠标有关的,比如左键按下,左键松开,右键按下,右键松开,双击右键等等。
我们可以通过鼠标事件获得与鼠标对应的图片上的坐标。我们通过以下函数来调用查看所有鼠标事件。
- events=[i for i in dir(cv2) if 'EVENT'in i]
- print events
我们来是这写一下这个函数,第一步还是调用库
- import cv2
- import numpy as np
调用鼠标回调函数
- def draw_circle(event,x,y,flags,param):
这个函数有5个参数:鼠标事件名称,坐标是双击时鼠标的位置,我没看懂flags,param是啥意思,不敢误人子弟。(希望有心人教教我)
- if event==cv2.EVENT_LBUTTONDBLCLK:
如果这个事件是左键双击事件
- cv2.circle(img,(x,y),100,(255,0,0),-1)
那么画一个圆,昨天说过有关cv2.circle的参数,今天不再赘述。
- img=np.zeros((512,512,3),np.uint8)
这是创造一个空的黑色环境,昨天也讲过,记的复习哦!
- cv2.namedWindow('shuhangjihuayuan')
命名窗口为shuangjihuayuan
- cv2.setMouseCallback('shuangjihuayuan',draw_circle)
(创建图像与窗口并将窗口)与回调函数绑定
然后就是显示出来就好啦
- while(1):
- cv2.imshow('shuangjihuayuan',img)
- if cv2.waitKey(20)&0xFF==27:
- break
然后销毁窗口
- 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,欢迎大家在下面留言!