【发布时间】:2023-03-16 18:10:01
【问题描述】:
我想隐藏我的窗口或窗口的标题栏。因为我想显示opencv无框的输出。
告诉我如何在 tkinter 或 pyqt5 的帮助下做到这一点。 而且我想要根据我的规范输出的大小。 并且我可以在代码运行时调整输出的大小和更改输出的位置,例如在桌面上的任何位置拖放。
import cv2
import os
import numpy as np
import datetime
date=datetime.datetime.now()
framerate=24
screen_size=(640,480) #std res 640,480
filename='E:/project/videos/cam_%s%s%s%s%s%s.avi' %(date.year,date.month,date.day,date.hour,date.minute,date.second)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
cap=cv2.VideoCapture(0)
out= cv2.VideoWriter(filename,fourcc,framerate,screen_size)
cv2.namedWindow('frame',cv2.WINDOW_NORMAL)
cv2.resizeWindow('frame',280,190)
cv2.moveWindow('frame',5,495)
#cv2.namedWindow('frame',cv2.WND_PROP_FULLSCREEN) #use for full screen
#cv2.setWindowProperty('frame', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
frame=cv2.flip(frame,1)
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
screen.mainloop()
【问题讨论】:
-
在tkinter中,在窗口上调用
.overrideredirect(1)来移除窗口装饰。 -
@acw1668 当我这样做时,会打开两个不同的窗口,一个是网络摄像头,另一个是 tkinter 窗口。
-
请更新您发布的代码以包含
tkinter部分。 -
@acw1668 代码已更新,请说明我哪里出错了,如果您愿意,可以自己编辑上述代码。
-
首先您不应该看到
tkinter窗口,因为screen.mainloop()由于while 循环而不会被调用。如果您按 'q' 终止 while 循环,它将被调用。如果你想使用tkinter窗口,你也不应该使用cv2.imshow(...)。
标签: python python-3.x opencv tkinter pyqt5