【问题标题】:Cannot move the window displayed with imshow无法移动使用 imshow 显示的窗口
【发布时间】:2015-05-26 19:39:12
【问题描述】:

我不确定这个问题是否有简单的解决方法,但如果我创建一个窗口来显示图像:

cv2.namedWindow('Window', cv2.WINDOW_AUTOSIZE)
cv2.imshow('Window',self.frame)
cv2.waitKey(30)

无法移动该窗口 - 它会立即冻结(应用程序挂起)。如果我使用cv2.waitKey(0),它工作得很好,但是这段代码无限等待键盘输入,只是卡在这个命令上,调用无限循环——不是你想象的我需要的。

【问题讨论】:

  • 它与waitKey(30)基本相同,只是告诉等待1毫秒(或分别为30毫秒)。是的——我试过了——没用。我无法移动窗口,拖动鼠标对其位置没有影响,我尝试几次后顶部栏显示通常的消息(程序没有响应等)
  • 那么,你的设置(不是 python 代码)有点错误。
  • 我正在从我的网络摄像头获取图像,并使用 imshow 无限循环显示它。一旦我用鼠标关闭窗口,有什么方法可以退出循环?因为现在在我关闭它之后它又会弹出 - 我想退出那个循环,关闭窗口而不使用键盘。
  • if cv2.waitKey(1)&0xff == 27: break - 不,用鼠标关闭窗口无济于事。如果需要,imshow() 将创建一个新窗口。

标签: python opencv


【解决方案1】:

可能是您正在使用大图像进行操作,导致它停止尝试使用:

cv2.WINDOW_NORMAL

【讨论】:

    【解决方案2】:

    试试这个:

    cap = cv2.VideoCapture(0) # access webcam
    _, frame = cap.read()
    
    cv2.namedWindow("image", cv2.WINDOW_NORMAL)
    
    cv2.imshow("image", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    这会获取网络摄像头看到的第一张图像并显示它。现在,只要您按下一个键,图像窗口就会关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多