簡體   English   中英

如何處理jupyter-notebook上的鼠標事件

[英]How to handle mouse events on jupyter-notebook

我在 Jupyter 筆記本上使用 OpenCV。 問題是 kernel 在用戶調用cv2.imshow()等函數時崩潰。 有幾種方法可以解決這個問題,一種是將圖像重定向到matplotlibs ,另一種是使用waitKey(0)等待輸入並按任意鍵關閉 windows。

在我的例子中,為了首先計算單應性,我必須 select 四個點。

鼠標處理程序:

def mouse_handler(event, x, y, flags, data):
    if event == cv2.EVENT_LBUTTONDOWN :
        cv2.circle(data['im'], (x,y),3, (0,0,255), 5, 16);
        cv2.imshow("Image", data['im']);
        if len(data['points']) < 4 :
            data['points'].append([x,y])

數據收集器:

def get_four_points(im):
    
    # Set up data to send to mouse handler
    data = {}
    data['im'] = im.copy()
    data['points'] = []
    
    #Set the callback function for any mouse event
    cv2.imshow("Image",im)
    cv2.setMouseCallback("Image", mouse_handler, data)
    cv2.waitKey(0)
    
    # Convert array to np.array
    points = np.vstack(data['points']).astype(float)
    
    return points

最終我將不得不點擊圖片。 所以我用上面說的方法都解決不了這個問題。 我該如何解決這個問題?

來源: https://github.com/spmallick/learnopencv/blob/master/Homography/utils.py

(注意:我使用的是虛擬環境。)

你應該檢查這個: opencv.imshow will cause jupyter notebook crash

此外,您應該按照以下說明應用%matplotlib notebookSave click events for Jupyter Notebook

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM