代码之家  ›  专栏  ›  技术社区  ›  Atul Balaji

opencv窗口必须出现在所有窗口前面

  •  0
  • Atul Balaji  · 技术社区  · 6 年前

    我有一个GUI对话框,其中包含一些按钮,单击这些按钮将调用一个函数来显示图像。但是,单击按钮时,OpenCV的窗口显示在对话框后面。我希望在单击按钮时OpenCV窗口出现在它前面。

    下面是创建窗口并显示图像的代码片段。

        cv2.namedWindow('image',0)
        cv2.resizeWindow('image',1200,720)
    
        while(1):
            cv2.imshow('image', self.img_res)
            k = cv2.waitKey(1) & 0xFF
            if k == ord('m'):
                res = 1
                break
            elif k == 27:
                break
    

    我已经看到一些例子 win32gui软件 模块,但我不知道如何在这里使用它。

    (我在Windows中使用的是python 2.7)

    1 回复  |  直到 6 年前
        1
  •  1
  •   kavko    6 年前

    我不知道你的完整代码,但是当我这样试的时候,它就在窗口前面。希望有帮助!

    import tkinter as tk
    from tkinter import *
    import cv2
    
    class GUI:
        def __init__(self, master):
            self.event = 1
            self.master = master
            self.img_res = img = cv2.imread('image.jpg', 0)
            self.b = Button(self.master, text='Show image', command=self.window)
            self.b.pack()
    
        def window(self, event=None):
            while self.event == 1:
                cv2.imshow('image', self.img_res)
                k = cv2.waitKey(1) & 0xFF
                if k == ord('m'):
                    res = 1
                    break
                elif k == 27:
                    break
    
    
    def main(): 
        root = tk.Tk()
        app = GUI(root)
        root.mainloop()
    
    if __name__ == '__main__':
        main()
    

    添加:

    您也可以尝试导入类型

    import ctypes
    
    ctypes.windll.kernel32.GetConsoleWindow()