使用cv2.imread
讀取圖片時,如果路徑有包含到中文,就會報錯。
本文將提供另外一個方式cv2.imdecode
,路徑有包含到中文時仍可以正常讀取圖片。
import cv2
img = cv2.imread('D:/CRABpy/write/圖檔/chars_01.png')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np
file_path = 'D:/CRABpy/write/圖檔/chars_01.png'
img = cv2.imdecode(np.fromfile(file=file_path, dtype=np.uint8), cv2.IMREAD_COLOR)
cv2.imwrite('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imdecode(np.fromfile(file=file_path, dtype=np.uint8), cv2.IMREAD_COLOR)
這種用法主要用來處理檔案路徑包含非 ASCII 字元的情況(例如中文路徑),以及解決某些情況下 OpenCV cv2.imread
讀取圖像失敗的問題。
這個方法的原理是先使用 numpy.fromfile
讀取二進位檔案資料,然後再使用 OpenCV 的 cv2.imdecode
將二進位資料解碼成圖像。這樣可以避免一些路徑編碼問題。
np.fromfile
用來從檔案中讀取二進位資料。file=file_path
指定檔案路徑。dtype=np.uint8
指定資料型態為 8 位元無符號整數,這是圖像資料的一般型態。cv2.imdecode
用來解碼二進位圖像資料。np.fromfile
讀取)。cv2.IMREAD_COLOR
表示將圖像解碼為彩色圖像。