2015-12-30 102 views
9

的OpenCV與Python(MAC OS X埃爾卡皮坦)

我創建一個示範項目,以跟蹤OpenCV的鼠標事件。使用openCV的標準mouseCallback。無法在OpenCV中獲得雙擊事件蟒蛇

以下是我的代碼相同。

drawWithMouse.py

#!/usr/local/bin/local/python3 
import numpy as np 
import cv2 as cv 

#Mouse callback function 
def draw_shape(event,x,y,flags,param): 
    print("event : ",event) 
    if event == cv.EVENT_LBUTTONDBLCLK: 
     cv.circle(img,(x,y),100,(255,0,0),-1) 

#Create a black image, a window and bind the function to the window 
img = np.zeros((780,780,3),np.uint8) 
cv.namedWindow('DrawWithMouse') 
cv.setMouseCallback('DrawWithMouse',draw_shape) 

while(1): 
    cv.imshow('DrawWithMouse',img) 
    if cv.waitKey(10) & 0xFF == 27: #ANDing with 0xFF as my machine is 64 bit 
     break 

cv.destroyWindow('DrawWithMouse') 

這個實現我一直都想與鼠標按下和鼠標鬆開事件,也是唯一一個click事件。我無法獲得雙擊事件(EVENT_LBUTTONDBLCLK)。對於這個常數值爲7

我得到下面的輸出event : 1 is mouse down and event: 4 is mouse up

回答

0

我只是試圖運行你的代碼,對我來說一切似乎都很好。我點擊並按住1出現,我釋放,並有一個4.當我雙擊有一個7.然而,這不起作用,如果鼠標移動。嘗試在雙擊或嘗試其他鼠標時保持鼠標不變Terminal is in the bottom right

+0

我在兩臺不同的電腦上試了這個。兩者都是MAC機器。 –

+0

而且我不能用兩個不同的鼠標雙擊它們中的任何一個。 –

+0

@RajendrasinhParmar macos上發生的情況也是如此 – Fred

1

您可以嘗試解決時間測量問題,例如time.clock()(不精確但最簡單)以及計算點擊和之前的時間差一。如果時間少於閾值,請執行雙擊操作。

time =0 
thresh = 1 
#Mouse callback function 
def draw_shape(event,x,y,flags,param): 
    print("event : ",event) 
    if event == cv.EVENT_LBUTTONDBLCLK: 
    if time.clock - time < thresh: 
     //double click 
    time = time.clock() 
    cv.circle(img,(x,y),100,(255,0,0),-1) 
0

我剛下載了OpenCV的 - 蟒蛇在埃爾卡皮坦爲Python 3,因爲我沒有它:

下載opencv_python-3.3.0.10-CP36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel。 macosx_10_10_x86_64.whl(43.8MB)

冉示例代碼和左鍵雙擊工作正常,創造了很多藍色圓圈。然後我試圖讓它失敗。我發現的唯一的事情,差點被雙擊速度設置爲在系統偏好設置/鼠標最高分:

enter image description here

我發現的最高設置和第二高之間的差異顯著。搜索網頁時,使用「快速」或「慢速」極端可能會造成雙擊麻煩。

您是否驗證過雙擊工作?儘管目前我找不到它,但我相信有一次設置會將雙擊轉化爲兩次單擊和其他潛在的Macintosh怪癖。 X-Windows是否與您的設置有關?

祝你好運。

+0

我試過了。現在已經很久了。我應該再試一次。因爲現在我的系統中所有內容都已更新。 –