在使用OpenCV的Python脚本中,我想在不同的屏幕/显示器上打开命名窗口。
我在Linux上,X设置为有两个显示器。通过将环境变量DISPLAY
分别设置为:0.0
或:0.1
,我可以控制默认打开名为windows的显示器。但是,我想要做的是在:0.0
上打开一个命名窗口,在:0.1
上打开一个命名窗口,并且能够连续更新每个窗口。
我找到Xlib
,这让我可以查询哪一个是默认屏幕,但我无法更改它。此外,我可以更新像os.environ['DISPLAY'] = ':0.0'
这样的环境变量,但不出所料,这对后来打开的窗口没有任何影响。
答案 0 :(得分: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()