OpenCV“ imshow”功能可打开许多窗口,而不是替换一个窗口上的框架-Python

时间:2019-01-09 20:27:25

标签: python opencv

我试图实时捕获我的屏幕(视频)并使用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()

3 个答案:

答案 0 :(得分:0)

对我来说,当我不在窗口中使用相同的名称时,就会出现此问题。

每次迭代都会打开一个新窗口(i是一个迭代):

cv2.imshow(i, image)

使用单个窗口:

cv2.imshow("Main", image)

答案 1 :(得分:-1)

我无法运行该库,但可以尝试一下。只是一些假设而已。

  1. img = sct.grab(监视器)在while循环之前写入

  2. 使用img代替np.array(img)

  3. 在break语句之前使用cv2.destroyWindow(“ Netstream”)

答案 2 :(得分:-2)

它仅打开一个窗口,但似乎好像不止一个窗口,因为它捕获了您自己的屏幕并在该屏幕上显示。因此,一旦打开一个窗口,您的程序就会捕获屏幕并在流上显示一个新的帧,并且此过程继续进行,从而产生了打开多个窗口的效果。如果您捕获一个屏幕并在另一个屏幕上显示,可能会有所帮助