3

在使用 OpenCV 的 Python 脚本中,我想在不同的屏幕/显示器上打开命名窗口。

我在 Linux 上,X 设置为有两个显示器。我可以通过将环境变量分别设置DISPLAY:0.0或来控制默认打开哪个显示命名窗口。:0.1但是,我想做的是打开一个命名窗口,:0.0然后打开一个,:0.1并且能够连续更新每个窗口。

我找到了Xlib,这让我可以查询例如哪一个是默认屏幕,但我无法更改它。此外,我可以更新环境变量,执行类似的os.environ['DISPLAY'] = ':0.0'操作,但不出所料,这对之后打开的窗口没有任何影响。

4

1 回答 1

2

使用multiprocessing.Process似乎可以解决问题。以下将显示图片:0.0:0.1显示:

import os
import time
from multiprocessing import Process
import cv2

def f(display):
    os.environ['DISPLAY'] = display
    print(os.environ['DISPLAY'])
    a = cv2.imread('avatar.png')
    cv2.imshow('window on %s'%display, a)
    cv2.waitKey(1000)
    time.sleep(10)

Process(target=f, args=(':0.0',)).start()
Process(target=f, args=(':0.1',)).start()
于 2013-06-03T20:28:57.857 回答