在這篇文章中,我們將整理計算機視覺項目中常用的Python庫,如果你想進入計算機視覺領域,可以先了解下本文介紹的庫,這會對你的工作很有幫助。 1、PIL/Pillow Pillow是一個通用且用戶友好的Python庫,提供了豐富的函數集和對各種圖像格式的支持,使其成為開發(fā)人員在其項目中處理圖像的必要工具。 它支持打開、操作和保存許多不同的圖像文件格式,用戶還可以對圖像執(zhí)行基本操作,如裁剪、調整大小、旋轉和更改圖像顏色。 Pillow還可以讓你在圖像上添加文字和形狀,提供一種簡單的方式來注釋你的視覺效果。 這個庫也是torchvison使用的圖像處理庫,它功能強大并且使用很簡單推薦使用。 2、OpenCV (Open Source Computer Vision Library)OpenCV無疑是最流行的圖像處理庫之一。它最初由英特爾公司開發(fā),已被廣泛應用于計算機視覺領域。它支持無數與計算機視覺和機器學習相關的算法,這有助于理解視覺數據并做出有見地的決策。OpenCV還針對實時應用進行了高度優(yōu)化,使其成為視頻監(jiān)控,自動駕駛汽車和先進機器人的絕佳選擇。 OpenCV 功能最多,并且在處理速度方面要比Pillow快,所以在對于速度有要求的情況下推薦使用它。 另外一點就是OpenCV 讀取的通道是BGR ,而其他的庫都是RGB 的,所以如果混用的話需要轉換,還記得這個代碼吧: cv2.cvtColor(image, cv2.COLOR_BGR2RGB) Mahotas包括一組用于圖像處理和計算機視覺的函數,這些函數主要是在高性能的c++中完成的,并且使用多線程,使其速度非常快。 它還包括各種形態(tài)操作,如侵蝕,擴張和連接成分分析。這些操作是圖像二值化、去噪和形狀分析等任務的基礎。這些功能OpenCV 都有,但是Mahotas更專注于圖像的圖像處理,而并不像OpenCV那樣什么都有,所以,Mahotas的API更簡單、也更友好。并且學習起來也比OpenCV簡單,但是速度方面卻差不多。 例子這是一個簡單的示例(使用 mahotas 附帶的示例文件),使用上述閾值區(qū)域作為種子調用分水嶺(我們使用 Otsu 定義閾值)。
這是一個非常簡單的使用示例mahotas.distance(計算距離圖): import pylab as p Scikit-Image建立在Scikit-Learn機器學習庫的基礎上的擴展功能,包括更高級的圖像處理能力。所以如果已經在使用Scikit進行ML,那么可以考慮使用這個庫。 它提供了一套完整的圖像處理算法。它支持圖像分割、幾何變換、色彩空間操作和過濾。 與許多其他庫不同,Scikit-Image支持多維圖像,這對于涉及視頻或醫(yī)學成像的任務是很有幫助的。Scikit-Image與其他Python科學庫(如NumPy和SciPy)無縫集成。
TensorFlow Image是TensorFlow的一個模塊,它支持圖像解碼、編碼、裁剪、調整大小和轉換。還可以利用TensorFlow的GPU支持,為更大的數據集提供更快的圖像處理。 也就是說如果你使用TF,那么可以使用它來作為訓練Pipline的一部分。 使用 Keras 效用函數加載數據:tf.keras.utils.image_dataset_from_directory 效用函數從磁盤加載圖像。 創(chuàng)建數據集,為加載器定義一些參數: batch_size = 32 開發(fā)模型時,最好使用驗證拆分。您將使用 80% 的圖像進行訓練,20% 的圖像進行驗證。
與TensorFlow Image類似,PyTorch Vision是PyTorch生態(tài)系統(tǒng)的一部分,主要用于與圖像處理相關的機器學習任務。 import torchvision SimpleCV建立在OpenCV、PIL(Python Imaging Library)和NumPy之上,為用戶提供了一組簡單而強大的函數和工具,用于加載、處理和分析圖像。 SimpleCV的設計目標是使計算機視覺技術對于初學者和非專業(yè)人士也能更加可靠和易于使用。它提供了一個簡單的API,隱藏了底層的復雜性,使用戶能夠快速實現常見的計算機視覺任務。 但是目前官方維護也較少,所以這個項目很有可能會夭折。
Imageio是一個用于讀取和寫入多種圖像格式的Python庫。它提供了一個簡單而強大的API,使用戶能夠輕松地處理圖像和視頻數據。Imageio提供了一個通用的數據模型,使用戶能夠以多種方式存儲圖像數據。它可以使用NumPy數組、PIL圖像對象或簡單的Python字節(jié)字符串來表示圖像數據。并且它提供了逐幀讀取和寫入視頻文件的功能,這對于處理視頻流或從視頻中提取幀非常有用。 import imageio.v3 as iio Albumentations是一個用于圖像增強和數據增強的Python庫。它專注于在機器學習和計算機視覺任務中提供高效、靈活和易于使用的數據增強方法。 我一直把這個庫當成torchvision的替代,因為它不僅有很多數據增強方法,還能夠直接處理掩碼bbox的增強。
timm是一個PyTorch模型庫,雖然可能和圖像處理沒有關系,但是它提供了廣泛的預訓練模型和計算機視覺模型的集合,這對我們來進行深度學習的時候是非常有幫助的?,F在它已經是huggingface的子項目了,這意味著這個項目有了資金的支持,所以不會擔心發(fā)展的問題。 import timm 無論你是剛開始基本的圖像處理還是探索高級機器學習模型,這些庫都為廣泛的圖像處理任務提供了必要的工具。 |
|
來自: hercules028 > 《Python and AI》