2014-03-05 45 views
4

我用namedWindow用OpenCV的,並得到一個錯誤: (圖像1):GTK的WARNING **:無法打開顯示:」opencv:namedWindow()錯誤「無法打開顯示」!

的代碼是:

Mat image1 = imread("image1.jpg"); 

cv::namedWindow("image1"); 
cv::imshow("image1",image1); 

waitKey(0); 

有人說,他通過解決它: 「export DISPLAY =:0」 但是我不明白這個解決方案是什麼意思。因爲我是opencv和C++的初學者,有人可以詳細解釋它嗎?例如:如何添加代碼?在哪裏實現?

+0

您提到的解決方案的來源是什麼? – AldurDisciple

+0

我不知道,它似乎是一個根指令,就像我從互聯網上得知的那樣。 – user3384116

+0

導出會設置一個環境變量,並且必須在同一會話/終端中發佈,以便正確更改環境。在終端外部或以root身份進行呼叫不起作用。 – ypnos

回答

4

您似乎缺少X服務器的環境。

使這項工作最簡單的方法是以圖形方式登錄,然後打開終端,然後啓動應用程序。這意味着,不打開另一個用戶的會話,例如,根。

如果您想以其他用戶或遠程方式運行該程序,則需要其他解決方案。請說明你在做什麼。這是一個常見的問題(這是關於授權)與常見的解決方案,取決於您的使用情況!這不是OpenCV相關的問題。

+0

雖然我不知道X Server是什麼。非常感謝你。 – user3384116

+1

X服務器負責您的圖形界面,因此您的程序必須連接到的實體才能繪製窗口。你的問題是你的應用程序(通過OpenCV)找不到要連接的X服務器。 DISPLAY變量實際上提供了一個服務器地址,其中:表示本地系統前的空字符串,0.0表示顯示0,屏幕0. – ypnos

+0

噢。這個描述是完美的。很多要學習... – user3384116