您好,登錄后才能下訂單哦!
在進行數字圖像處理時,我們經常需要對圖像進行讀取、保存、縮放、裁剪、旋轉、顏色轉換等基本操作。在使用python進行編程時,涉及到多個不同的圖像處理庫的選擇,今天我們簡單聊一聊這幾個庫:opencv、scikit-image、scipy、pillow、matplotlib等等(不包括深度學習:tf.image等)
1. PIL(Python Imaging Library)
PIL(Python Imaging Library)是Python常用的圖像處理庫,而Pillow是PIL的一個友好Fork,提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操作等。相比opencv更為輕巧。Image模塊是在Python PIL圖像處理中常見的模塊,對圖像進行基礎操作的功能基本都包含于此模塊內。如open、save、show等功能。
2. scipy.misc
python在科學計算領域有三個非常受歡迎庫,numpy、SciPy、matplotlib。numpy是一個高性能的多維數組的計算庫,SciPy是構建在numpy的基礎之上的,它提供了許多的操作numpy的數組的函數。SciPy是一款方便、易于使用、專為科學和工程設計的python工具包,它包括了統計、優化、整合以及線性代數模塊、傅里葉變換、信號和圖像圖例,常微分方差的求解等。
3. Opencv
OpenCV是一個開放源代碼的計算機視覺應用平臺,由英特爾公司下屬研發中心俄羅斯團隊發起該項目,開源BSD證書,OpenCV的目標是實現實時計算機視覺,,是一個跨平臺的計算機視覺庫。從開發之日起就得到了迅猛發展,獲得了眾多公司和業界大牛的鼎力支持與貢獻,因為是BSD開源許可,因此可以免費應用在科研和商業應用領域。
OpenCV中已經包含如下應用領域功能:二維和三維特征工具箱、運動估算、人臉識別系統、姿勢識別、人機交互、移動機器人、運動理解、對象鑒別、分割與識別、立體視覺、運動跟蹤、增強現實(AR技術)。基于上述功能實現需要,OpenCV中還包括以下基于統計學機器學習庫:Boosting算法、Decision Tree(決策樹)學習、Gradient Boosting算法、EM算法(期望最大化)、KNN算法、樸素貝葉斯分類、人工神經網絡、隨機森林、支掌向量機。
編程語言:OpenCV中多數模塊是基于C++實現,其中有少部分是基于C語言實現,當前OpenCV提供的SDK已經支持C++、Java、Python等語言應用開發。當前OpenCV本身新開發的算法和模塊接口都是基于C++產生。OpenCV-Python使用Numpy,這是一個高度優化的數據庫操作庫,具有MATLAB風格的語法。所有OpenCV數組結構都轉換為Numpy數組。這也使得與使用Numpy的其他庫(如SciPy和Matplotlib)集成更容易。
注意:cv2默認為 BGR順序,而其他軟件(PIL、scopy.misc)一般使用RGB
4. matplotlib
Matplotlib是一個Python 2D繪圖庫,它可以在不同的平臺上以各種硬拷貝格式和交互環境生成發布質量數據。Matplotlib可以用于Python腳本、Python和IPython shell、Jupyter notebook、web應用服務器和四個圖形用戶界面工具包。對于簡單的繪圖,pyplot模塊提供了一個類似于matlab的接口,特別是與IPython結合使用時。對于power用戶,您可以通過面向對象的界面或通過MATLAB用戶熟悉的一組函數來完全控制線樣式、字體屬性、軸屬性等.
5. skimagescikit-image是一組用于圖像處理和計算機視覺的算法。“skimage”的主要包只提供了一些用于轉換圖像數據類型的實用程序;大多數功能程序存在其子包中。讀取功能包含在io模塊中。
使用建議
1. 這些庫比較來看,我本人更喜歡使用opencv的庫來進行圖像處理的基本操作,數據格式為numpy,可以直接進行numpy的處理;
2. 進行折線圖這類圖繪制的時候,一般使用matplotlib庫。
3. Opencv默認為 BGR順序,而其他軟件(PIL、scopy.misc)一般使用RGB。
so...你pick哪個?
另外,前天有伙伴留言說想學python基礎,這兩天總結了一些Python視頻學習教程,評論回復:Python,即可領取哈!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。