2015-12-30 10 views
9

OpenCV (मैक ओएस एक्स एल कैप्टन)

मैं openCV में माउस की घटनाओं पर नज़र रखने के लिए एक डेमो परियोजना बना रहा हूं अजगर के लिए 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') 
इस कार्यान्वयन मैं हमेशा नीचे माउस हो रही है और mouseup घटना और केवल एक क्लिक के साथ घटना

। मैं डबल क्लिक इवेंट (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

मैंने इसे दो अलग-अलग कंप्यूटरों पर आजमाया था। दोनों मैक मशीनें हैं। –

+0

और मैं उनमें से किसी पर दो अलग-अलग माउस के साथ डबल क्लिक नहीं कर पा रहा हूं। –

+0

@RajendrasinhParmar मैकोज़ पर मेरे साथ ऐसा होता है – 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

मैं हाल में अजगर 3 के लिए एल कैप्टन में डाउनलोड किया opencv-अजगर के बाद से मैं यह नहीं था:

डाउनलोड कर रहा है 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

मैं उच्चतम सेटिंग और दूसरा सर्वोच्च बीच एक महत्वपूर्ण अंतर पाया गया। वेब को खोजना, फास्ट या स्लो चरम का उपयोग करके डबल क्लिकिंग के साथ परेशानी हो सकती है।

क्या आपने सत्यापित किया है कि आपका डबल क्लिक सामान्य रूप से काम करता है? हालांकि मुझे वर्तमान में यह नहीं मिल रहा है, मेरा मानना ​​है कि एक बार ऐसी सेटिंग्स थीं जो डबल क्लिक को दो अलग-अलग क्लिक और अन्य संभावित मैकिंटोश क्विर्क में परिवर्तित करती थीं। क्या एक्स-विंडोज आपके सेटअप में शामिल है?

शुभकामनाएं।

+0

मैंने कोशिश की। यह अब काफी समय है। मुझे इसे फिर से प्रयास करना चाहिए। क्योंकि अब सब कुछ मेरे सिस्टम में अपडेट किया गया है। –

संबंधित मुद्दे