在终端或Spyder中运行我的代码时,将打开一个图像。但是,单击鼠标左键或鼠标右键均不执行任何操作。这是我编写的代码:
import cv2
import matplotlib.pyplot as plt
def drawCircle(event,x,y,flags,param):
if event == cv2.EVENT_LBUTTONDOWN: #(If Left button of mouse clicked)
cv2.circle(img,(x,y),radius = 100, color =(255,0,0),thickness=-1)
if event == cv2.EVENT_RBUTTONDOWN: #(If Right button of mouse clicked)
cv2.circle(img,(x,y),radius = 100, color =(0,255,0),thickness=-1)
img= np.zeros(shape=(512,512,3),dtype=np.int8)
cv2.namedWindow("someimage")
cv2.setMouseCallback("someimage", drawCircle)
while True:
cv2.imshow("someimage",img)
if cv2.waitKey(2):
break
cv2.destroyAllWindows()
最佳答案
您缺少导入:
import numpy as np
另外,如果在指定的延迟时间内未按任何键(在您的情况下为2ms),waitkey将返回-1。因此,
cv2.waitKey(2)
调用求值为真值,并执行break
。更改为if cv2.waitKey(2) == ord("q"):
break
仅当您按
q
键时,这将停止循环我还注意到,右键单击将首先打开一个上下文菜单。这是解决方案的链接:
Why does a right click open a drop down menu in my OpenCV imshow() window?
关于python - 无法在Python中使用namedWindow绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61840232/