[英]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 notebook
: Save click events for Jupyter Notebook
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.