原因:
cv2只能讀取英文路徑,中文路徑會報錯,這里需要numpy來對中文路徑的圖片進行解碼處理,之后就可以打開圖片。
解決方法:
先不直接讀取圖片,而是采用numpy中的fromfile讀取文件,將圖片按照int類型讀入數據,讀入的是一維數組,然后通過cv中imdecode來對數組解碼得到圖片,imdecode函數的作用是從內存緩沖區中讀取圖像,如果緩沖區太短或包含無效數據時,函數返回一個空矩陣(Mat::data==NULL)。
如果是彩色圖像,解碼后的圖像將按照B G R順序存儲通道。這函數有兩個參數imdecode(buf,flags),buf是輸入數組或字節向量,flags 與cv::imread相同的flag,
cv2.IMREAD_COLOR:加載彩色圖片,這個是默認參數,可以直接寫1
cv2.IMREAD_GRAYSCALE:以灰度模式加載圖片,可以直接寫0
cv2.IMREAD_UNCHANGED:包括alpha,可以直接寫-1
代碼范例如下:
import cv2 import numpy as np img = cv2.imdecode(np.fromfile("E:\壁紙\壁紙\code.jpg", dtype=np.uint8), 1) # 可讀取中文路徑圖片 cv2.imshow("code", img) # 展示圖片時窗口名稱 cv2.waitKey(0) # 圖像展示時間,單位:毫秒(ms)
————————————————
版權聲明:本文為CSDN博主「不吶吶.」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_47183158/article/details/108102002