python - 无法在Python中使用namedWindow绘制图像

标签 python opencv

在终端或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/

相关文章:

python - 裁剪X射线图像以去除黑色背景

android - 无法在android中运行opencv示例

java - 使用 OpenCV java 包装器的 SVD solvez

python - 如何控制 tensorflow 中的维度广播?

python - 将 OpenCV 与 PyInstaller 结合使用

memory - cvShowImage和Kinect SDK的内存问题:骨架查看器

opencv - 将具有简单形状的图像转换为多边形

python - Peewee SQL 查询连接,其中没有一个匹配

python - 如何在 Python 中构建玩游戏的神经网络?

python - 类型错误 : not all arguments converted during string formatting string python