cv2.imread?和?cv2.imdecode?用法及區(qū)別
對于路徑中含有中文的圖像,直接用cv2.imread讀取會報錯,上次看到有大佬使用cv2.imdecode就可以正常讀取,有點好奇,所以今天來記錄下二者用法和區(qū)別。
1.讀取圖像的兩種方式對比
cv2.imread正常讀取影像
import cv2 path = '/data/北京/beijing.png' img = cv2.imread(path)
運行上述代碼,會報錯!
cv2.imdecode從內存中讀取影像
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ū)別的地方。
函數說明:
np.decode 從內存的緩沖區(qū)讀取圖像
np.fromfile 將文本或二進制文件中數據構造成數組
2.保存圖像的兩種方式對比
cv2.imwrite 正常讀取影像
import cv2 out_path = '/data/北京/beijing.png' cv2.imwrite(out_path,img)
運行上述代碼,會報錯!
cv2.imdecode從內存中讀取影像
import cv2
out_path = '/data/北京/beijing.png'
arr = cv2.imencode('png',img)
out[1].tofile(out_path)運行上述代碼,成功!
函數說明:
cv2.encode 將圖像編碼到內存緩沖區(qū)中
np.tofile 將數組中的數據以二進制格式寫進文件
到此這篇關于cv2.imread 和 cv2.imdecode 用法的文章就介紹到這了,更多相關cv2.imread 和 cv2.imdecode內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

