cv2.imshow 图像窗口放置在可视屏幕之外

Posted

技术标签:

【中文标题】cv2.imshow 图像窗口放置在可视屏幕之外【英文标题】:cv2.imshow image window placement is outside of viewable screen 【发布时间】:2018-04-24 09:06:57 【问题描述】:

我正在运行 python35 的 Anaconda 安装和 menpo 的 cv2 安装。 我遇到cv2.imshow() 在控制台(cmd、spyder、ipython)中将类似于下面的代码作为独立脚本和逐行运行时将图像窗口不一致地放置在可视屏幕之外的问题...

import cv2
img = cv2.imread('Image71.jpg',0)
cv2.startWindowThread()
cv2.namedWindow('image')
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

我也试过上面没有cv2.starWindowThread()cv2.namedWindow() 的结果相同。窗口出现在我的任务栏上但不在视图中,cv2.waitKey(0) 响应击键,并且我无法使用 Windows 10 的任何窗口排列快捷键(例如 alt+tab、Winkey +左等)。 我的操作系统是 Win10 版本 1709。 非常感谢任何帮助,谢谢!

【问题讨论】:

spy++之类的窗口查询软件对窗口的可见性和坐标有什么说法? 我对spy++不熟悉。当为 cv2.imshow() 打开的窗口打开“Windows 属性”时,在“样式”选项卡下:“窗口样式:14CB0000”和“WS_VISIBLE”被列出。在“常规”选项卡下“矩形:(2400, 185)-(4345, 1290), 1945x1105;恢复的矩形:(2400, 185)-(4345, 1290), 1945x1105;客户端矩形:(10, 39)-( 1935、1095)、1925x1056"。我再次对 spy++ 不熟悉。希望这个澄清是你要问的,@ivan_pozdeev。 【参考方案1】:
img = cv2.imread("test.png")
winname = "Test"
cv2.namedWindow(winname)        # Create a named window
cv2.moveWindow(winname, 40,30)  # Move it to (40,30)
cv2.imshow(winname, img)
cv2.waitKey()
cv2.destroyAllWindows()

【讨论】:

【参考方案2】:

Kinght 将答案封装在一个函数中,以便于调用

def showInMovedWindow(winname, img, x, y):
    cv2.namedWindow(winname)        # Create a named window
    cv2.moveWindow(winname, x, y)   # Move it to (x,y)
    cv2.imshow(winname,img)

img = cv2.imread('path.png')
showInMovedWindow('named_window',img, 0, 200)

【讨论】:

以上是关于cv2.imshow 图像窗口放置在可视屏幕之外的主要内容,如果未能解决你的问题,请参考以下文章

cv2.imshow() 无法正确显示图像 [重复]

为啥在 Jupyter 笔记本中调用 cv2.imshow() 时出现无响应窗口

cv2.imshow() 函数打开一个总是说没有响应的窗口 - python opencv

opencv

imshow() 在 Python 中为图像提供错误

cv2.imshow命令在opencv-python中无法正常工作