opencv是相當強悍、好用的影像、視覺模組,在python玩樂過程中,經常有他出場的機會!
最近在試著練習使用PyQT5結合cv2做個螢幕截圖及簡易標記工具時,遇到了cv2對於中文檔名檔案的存取會發生錯誤的狀況!
這個問題當然可以說:阿~~那就不要使用中文檔名就好了嘛...
但是本著「無事生非」的精神(呵~~程式設計好玩的地方就在這裡),還是要解決這個問困擾啊!
終於~~沒多大困難的尋求了解決方案如下,做個紀錄,給自己也給其他人參考!
一般情形下,我們會透過 cv2.imread(filename) 來讀取檔案,但若是遇到讀取中文檔名時,就會遇到類似的錯誤訊息如下:
基本上是改用cv2.imdecode() 的方式呼叫,整體修正方式,寫成個小函式,方便隨時呼叫....
這樣,就可以正常呼叫、顯示中文檔案了!
別忘了,要引入numpy喔!
===================================================
至於「存成中文檔名」的操作~~若是使用一般 cv2.imwrite(filename, image) 則會根本沒有反應,令你以為操作是ok的,實際上根本是沒有反應,檔案也未完成寫入。
「存成中文檔名」的解決方式,如下圖。
基本上是改用,cv2.imencode(ext, image)[1].tofile(filename) 的方式執行即可正常操作。
好囉~~cv2處理中文檔案的存取操作就是這樣囉!
沒啥好掰的了~~收工!