opencv讀取路徑中包含中文的圖片失敗的解決辦法


原因:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM