【问题标题】:is it possible to activate/set focus on a cv2 window?是否可以在 cv2 窗口上激活/设置焦点?
【发布时间】:2021-12-15 11:55:00
【问题描述】:

所以我得到了以下代码:

import time
from cv2 import cv2

time.sleep(1)
image = cv2.imread("test.png", cv2.IMREAD_GRAYSCALE) 
cv2.imshow("image", image)
cv2.setWindowProperty("image", cv2.WND_PROP_TOPMOST, 1)
cv2.waitKey(0)

程序等待 1 秒后,它将图像显示为最顶部的窗口。 当我按任意键时,图像和程序关闭。到目前为止一切顺利

但是,如果我在程序处于睡眠状态时按 alt-tab(1)(我需要在焦点位于不同窗口时查看图像),会发生这种情况:

程序等待 1 秒,然后将图像显示为最顶部的窗口。 当我按下任何键时,什么都没有发生。 如果我手动选择/设置图像焦点,然后按任意键关闭

我试过这个http://www.noah.org/wiki/OpenCV_display_window_on_top_with_focus,它描述了一个类似的问题,但似乎没有解决这个问题。

所以如果有办法以编程方式激活/设置窗口焦点,那么我在徘徊,所以当我在第二种情况下按任意键时,窗口会在没有多次选择的情况下关闭?

【问题讨论】:

    标签: python cv2


    【解决方案1】:

    对于 Windows 操作系统,您可以使用here 描述的解决方案:

    import time
    import cv2
    from pywinauto.findwindows import find_window
    from win32gui import SetForegroundWindow
    
    time.sleep(5)
    image = cv2.imread("test.png", cv2.IMREAD_GRAYSCALE) 
    cv2.imshow("image", image)
    cv2.setWindowProperty("image", cv2.WND_PROP_TOPMOST, 1)
    
    SetForegroundWindow(find_window(title="image"))
    
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    对于 Linux,您可能必须检查 OpenCV 的构建方式(使用 GTK 或 Qt 构建)并研究如何将窗口设置为焦点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 2012-07-08
      相关资源
      最近更新 更多