2013-04-30 128 views
2

在使用OpenCV的Python腳本中,我想在不同的屏幕/顯示器上打開命名窗口。cv2.imshow()在不同的屏幕上

我在Linux上,X被設置爲有兩個顯示器。通過將環境變量DISPLAY分別設置爲:0.0:0.1,我可以控制默認打開的窗口名稱。但是,我想要做的是在:0.0上打開一個命名窗口,並在:0.1上打開一個命名窗口,並且能夠連續更新每個窗口。

我發現Xlib,它讓我查詢例如哪一個是默認屏幕,但我無法更改它。另外,我可以更新像os.environ['DISPLAY'] = ':0.0'這樣的環境變量,但不出意外,這對於之後打開的窗口沒有任何影響。

回答

1

使用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()