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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM