ref:
因為server 是沒有 monitor 的,所以remote X 來跑,run plt.imshow( ) 就會出現上面的 error。
follow ref, install 一堆..
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
windows 端開啟 xserver 也用了下面 option (雖然覺得不是問題)
D:\Program Files\VcXsrv>vcxsrv.exe :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto
另外,cv2.imshow( ) 很奇怪,執行完並不會show 圖,要呼叫 cv2.waitKey(0) 之後才會。
即使是用 interactive mode,在python 的 prompt 下。
執行完 imshow( ) 之後,沒有反應。
要再執行 cv2.waitKey(0) 之後才會顯示 (無論是正確還是錯誤的 encoding)
imread 也是,雖然說 default 是 cv2.IMREAD_COLOR,但是有時候不寫,雖然沒有 Error,但是不會正常顯示。
雖然 mediainfo 讀出是 YUV420 jpg file( mediainfo 錯誤?),指定 cv2.IMREAD_COLOR 的話,imshow 還是會正常顯示。
不指定cv2.IMREAD_COLOR的話,imshow 就會顯示出不正常的 size and color (auto detect failed ?)
總之
cv2.imread 配合 cv2.imshow 真的莫名其妙的問題很多
ref:
原來 waitKey 是專門給 imshow 用的。
是用來決定要顯示多久用的 function。
所以 imshow 之後一定要配合 waitKey,才會顯示。
同時 waitKey 也不能單獨使用,一定要再 imshow 之後,才會真正讀到 keyboard 輸入。
單純的call waitKey( ) ,前面沒有 imshow 的話,waitKey 會直接 return -1