2021年11月25日 星期四

【簡單玩python】~~opencv(cv2)存取中文檔案發生錯誤的解決方案

 opencv是相當強悍、好用的影像、視覺模組,在python玩樂過程中,經常有他出場的機會!







最近在試著練習使用PyQT5結合cv2做個螢幕截圖及簡易標記工具時,遇到了cv2對於中文檔名檔案的存取會發生錯誤的狀況!

這個問題當然可以說:阿~~那就不要使用中文檔名就好了嘛...

但是本著「無事生非」的精神(呵~~程式設計好玩的地方就在這裡),還是要解決這個問困擾啊!

終於~~沒多大困難的尋求了解決方案如下,做個紀錄,給自己也給其他人參考!

一般情形下,我們會透過 cv2.imread(filename) 來讀取檔案,但若是遇到讀取中文檔名時,就會遇到類似的錯誤訊息如下:


解決「讀取中文檔名」的方法,如下圖。

基本上是改用cv2.imdecode() 的方式呼叫,整體修正方式,寫成個小函式,方便隨時呼叫....


這樣,就可以正常呼叫、顯示中文檔案了!

別忘了,要引入numpy喔!

===================================================

至於「存成中文檔名」的操作~~若是使用一般 cv2.imwrite(filename, image) 則會根本沒有反應,令你以為操作是ok的,實際上根本是沒有反應,檔案也未完成寫入。

「存成中文檔名」的解決方式,如下圖。

基本上是改用,cv2.imencode(ext, image)[1].tofile(filename) 的方式執行即可正常操作。



好囉~~cv2處理中文檔案的存取操作就是這樣囉!

沒啥好掰的了~~收工!