在圖片上雙擊過的位置繪制一個 圓圈
鼠標事件就是和鼠標有關的,比如左鍵按下,左鍵松開,右鍵按下,右鍵松開,雙擊右鍵等等。
我們可以通過鼠標事件獲得與鼠標對應的圖片上的坐標。我們通過以下函數來調用查看所有鼠標事件。
- 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,歡迎大家在下面留言!