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