您好,登錄后才能下訂單哦!
opencv和numpy以及pillow處理圖片時數據各個維度的布局是怎樣的,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
opencv讀取圖片時,讀取后轉為numpy數組的格式是(height, width, channels). pillow第三方庫讀取圖片后數據的格式是(width, height). 使用numpy庫讀取格式為(width, height)的pillow的圖片后, 數據的格式自動轉為(height, width, channels) pillow從維度為(height, width, channels)的numpy數據后, 自動將維度調整為(width, height).
代碼實驗展示:
from PIL import Imageimport cv2import numpy as npif __name__ == '__main__':print()print('測試opencv-python讀取圖片的格式'.center(50,'-'))img_cv2 = cv2.imread('bryant.jpg', 1) # 讀取圖片文件img_cv2 = np.float32(img_cv2) / 255 # 轉為float32類型print('opencv-python的圖片讀取格式:(height, width, channels)',img_cv2.shape) # opencv-python的圖片讀取格式:(height, width, channels) (667, 1000, 3)print()print('測試Python第三方庫Pillow讀取圖片的格式'.center(50,'-'))img_PIL = Image.open("bryant.jpg")print(img_PIL.format, img_PIL.size, img_PIL.mode) # JPEG (1000, 667) RGBprint('圖片的寬度:', img_PIL.width, '圖片的高度:', img_PIL.height) # 圖片的寬度: 1000 圖片的高度: 667print()print('測試Python第三方庫NumPy處理PIL圖片的方式'.center(50,'-'))imgNumPy_from_PIL = np.array(img_PIL)print('imgNumPy的形狀是:', imgNumPy_from_PIL.shape) # imgNumPy的形狀是: (667, 1000, 3)print('NumPy處理PIL圖片的方式:(height, width, channels)',imgNumPy_from_PIL.shape) # NumPy處理PIL圖片的方式:(height, width, channels) (667, 1000, 3) print()print('測試Python第三方庫Pillow讀取NumPy數據的格式'.center(50,'-'))mg_PIL_from_Numpy = Image.fromarray(imgNumPy_from_PIL)print(mg_PIL_from_Numpy.format, mg_PIL_from_Numpy.size, mg_PIL_from_Numpy.mode) # None (1000, 667) RGBprint('圖片的寬度:', mg_PIL_from_Numpy.width, '圖片的高度:', mg_PIL_from_Numpy.height) # 圖片的寬度: 1000 圖片的高度: 667mg_PIL_from_Numpy.show() img_PIL.show()
控制臺輸出結果:
Windows PowerShell 版權所有 (C) Microsoft Corporation。保留所有權利。 嘗試新的跨平臺 PowerShell https://aka.ms/pscore6 加載個人及系統配置文件用了 891 毫秒。 (base) PS C:\Users\chenxuqi\Desktop\News4cxq\test4cxq> & 'D:\Anaconda3\envs\ssd4pytorch2_2_0\python.exe' 'c:\Users\chenxuqi\.vscode\extensions\ms-python.python-2021.1.502429796\pythonFiles\lib\python\debugpy\launcher' '61922' '--' 'c:\Users\chenxuqi\Desktop\News4cxq\test4cxq\test.py' --------------測試opencv-python讀取圖片的格式-------------- opencv-python的圖片讀取格式:(height, width, channels) (667, 1000, 3) ------------測試Python第三方庫Pillow讀取圖片的格式------------- JPEG (1000, 667) RGB 圖片的寬度: 1000 圖片的高度: 667 -----------測試Python第三方庫NumPy處理PIL圖片的方式------------ imgNumPy的形狀是: (667, 1000, 3) NumPy處理PIL圖片的方式:(height, width, channels) (667, 1000, 3) ----------測試Python第三方庫Pillow讀取NumPy數據的格式---------- None (1000, 667) RGB 圖片的寬度: 1000 圖片的高度: 667 (base) PS C:\Users\chenxuqi\Desktop\News4cxq\test4cxq> conda activate ssd4pytorch2_2_0 (ssd4pytorch2_2_0) PS C:\Users\chenxuqi\Desktop\News4cxq\test4cxq>
使用的原圖:bryant.jpg:
運行結果展示:
關于opencv和numpy以及pillow處理圖片時數據各個維度的布局是怎樣的問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。