zoukankan      html  css  js  c++  java
  • Opencv处理鼠标事件-OpenCV步步精深

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

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

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

    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,欢迎大家在下面留言!

  • 相关阅读:
    设计模式---适配器模式
    【面经】2019-4-1 杭州边锋网络面经
    web前端基础——jQuery编程进阶
    web前端基础——jQuery编程基础
    web前端基础——初识HTML DOM编程
    web前端基础——初识JavaScript
    web前端基础——初识CSS
    web前端基础——初识HTML
    CentOS 6.5上安装python2.7、pip以及Python命令行补全和yum冲突解决
    Python中常用技巧整理
  • 原文地址:https://www.cnblogs.com/yujiachen/p/7677545.html
Copyright © 2011-2022 走看看