我试图实时捕获我的屏幕(视频)并使用Python中的OpenCV进行显示。
运行代码时,它会打开许多窗口,而不是仅替换一个窗口上的框架。
请帮助:)
代码如下:
import numpy as np
import cv2
from mss import mss
sct = mss()
monitor = {'top': 0, 'left': 0, 'width': 1920, 'height': 1080}
while True:
img = sct.grab(monitor)
cv2.imshow("Netstream", np.array(img))
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
答案 0 :(得分:0)
对我来说,当我不在窗口中使用相同的名称时,就会出现此问题。
每次迭代都会打开一个新窗口(i
是一个迭代):
cv2.imshow(i, image)
使用单个窗口:
cv2.imshow("Main", image)
答案 1 :(得分:-1)
我无法运行该库,但可以尝试一下。只是一些假设而已。
img = sct.grab(监视器)在while循环之前写入
使用img代替np.array(img)
在break语句之前使用cv2.destroyWindow(“ Netstream”)
答案 2 :(得分:-2)
它仅打开一个窗口,但似乎好像不止一个窗口,因为它捕获了您自己的屏幕并在该屏幕上显示。因此,一旦打开一个窗口,您的程序就会捕获屏幕并在流上显示一个新的帧,并且此过程继续进行,从而产生了打开多个窗口的效果。如果您捕获一个屏幕并在另一个屏幕上显示,可能会有所帮助