如何在opencv python中显示没有标题栏和边框的图像

yqyhoc1h  于 2023-08-06  发布在  Python
关注(0)|答案(3)|浏览(236)

显示图像像它显示在全屏,但在小尺寸。从后端,我们选择的图像大小,我们必须显示此图像没有任何标题栏和边框。只会出现图像。我尝试了很多方法,但都没有成功。有什么办法可以做到吗?如果有任何人知道,请帮助,我在这卡住了很多天
操作系统:乌藨子PI语言使用:Python 3

0lvr5msh

0lvr5msh1#

在tkinter窗口/框架的帮助下,我们可以显示没有任何边框和标题栏的图像或视频。我们要做的是,让tkinter窗口透明。我把我的代码在下面,它显示了网络摄像头视频无边框和标题栏在任何大小。

import numpy as np
import cv2
from tkinter import *
#import tkinter as tk
from PIL import Image, ImageTk
import sys

window = Tk()  #Makes main window
window.overrideredirect(True)
window.wm_attributes("-topmost", True)
window.geometry("+600+200")
display1 = Label(window)
display1.grid(row=1, column=0, padx=0, pady=0)  #Display 1
cap = cv2.VideoCapture(0)

def show_frame():
    _, frame = cap.read()
    frame = cv2.resize(frame, (400,400))
    #frame = cv2.flip(frame, 1)
    cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
    img = Image.fromarray(cv2image)
    imgtk = ImageTk.PhotoImage(master = display1, image=img)
    display1.imgtk = imgtk #Shows frame for display 1
    display1.configure(image=imgtk)
    
    window.after(10, show_frame)

show_frame()
window.mainloop()

字符串

frame = cv2.resize(frame, (400,400)) this is use to resize our frame.

7z5jn7bk

7z5jn7bk2#

在OpenCV中显示图像的窗口在HighGUI模块中使用OpenGL或Qt实现。你可以稍微修改一下显示给用户的内容(也取决于系统),但我认为你想要实现的在OpenCV中是不可能的。
Here是在OpenCV中创建新窗口/小部件时可以使用的所有标志的列表。不幸的是,没有像全屏模式那样隐藏标题栏的标志。为什么?这对OpenCV用户来说并不重要。他们使用imshow只是为了查看结果,主要是为了调试,所以他们不需要删除标题栏。
你能做什么?将您的程序与Qt框架链接,并直接使用Qt显示图像,而不是通过 Package 器。This可能会有帮助。

svmlkihl

svmlkihl3#

我知道这是一个老职位。但是,由于我没有找到更好/更简单的答案在其他地方-我将张贴我的解决方案。完全在cv 2中完成。
这是可以做到的-只是这种方式太荒谬了。你在全屏模式下启动,然后移动窗口并调整窗口大小。之后,它是无标题和无边界的。在我的解决方案中,我还使用了TOPMOST属性来锁定所有内容的流预览(我使用它来监视生病的奶奶,而我的工作)。

stream_window = 'RPi3 IR cam'
    window_width = 240
    window_height = 180
    cv2.namedWindow(
        stream_window,
        flags=(cv2.WINDOW_NORMAL | cv2.WINDOW_GUI_NORMAL | cv2.WINDOW_FREERATIO))
    cv2.setWindowProperty(stream_window, cv2.WND_PROP_TOPMOST, 1.0)
    cv2.setWindowProperty(stream_window, cv2.WND_PROP_FULLSCREEN, 1.0)
    cv2.resizeWindow(
        stream_window,
        window_width,
        window_height)
    cv2.moveWindow(
        stream_window,
        screen_width - window_width,
        screen_height - window_height - 40)

字符串
之后,只需调用cv2.imshow并输入您需要的内容即可。
Cheers:)

相关问题