對于路徑中含有中文的圖像,直接用cv2.imread讀取會報錯,上次看到有大佬使用cv2.imdecode就可以正常讀取,有點好奇,所以今天來記錄下二者用法和區(qū)別。
目錄
?1.讀取圖像的兩種方式對比
?2.保存圖像的兩種方式對比
?
?1.讀取圖像的兩種方式對比
- cv2.imread正常讀取影像
import cv2
path = '/data/北京/beijing.png'
img = cv2.imread(path)
運行上述代碼,會報錯!
- cv2.imdecode從內(nèi)存中讀取影像
import cv2
path = '/data/北京/beijing.png'
arr = np.fromfile(path, dtype=np.uint8)
img = cv2.imdecode(arr, flags=cv2.IMREAD_COLOR)
運行上述代碼,成功!
并且imdecode得到的影像波段順序是RGB,不是BGR,這是與opencv區(qū)別的地方。
函數(shù)說明:
np.decode? 從內(nèi)存的緩沖區(qū)讀取圖像
np.fromfile? 將文本或二進制文件中數(shù)據(jù)構(gòu)造成數(shù)組
?2.保存圖像的兩種方式對比
- cv2.imwrite 正常讀取影像
import cv2
out_path = '/data/北京/beijing.png'
cv2.imwrite(out_path,img)
運行上述代碼,會報錯!
- cv2.imdecode從內(nèi)存中讀取影像
import cv2
out_path = '/data/北京/beijing.png'
arr = cv2.imencode('png',img)
out[1].tofile(out_path)
運行上述代碼,成功!
?函數(shù)說明:
cv2.encode? 將圖像編碼到內(nèi)存緩沖區(qū)中文章來源:http://www.zghlxwxcb.cn/news/detail-781703.html
np.tofile? 將數(shù)組中的數(shù)據(jù)以二進制格式寫進文件文章來源地址http://www.zghlxwxcb.cn/news/detail-781703.html
整理不易,歡迎一鍵三連?。?!
到了這里,關(guān)于【cv2.imread】與【cv2.imdecode】用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!