小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

10 個圖像處理的Python庫!

 hercules028 2023-09-14

在這篇文章中,我們將整理計算機視覺項目中常用的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)
3、Mahotas

Mahotas包括一組用于圖像處理和計算機視覺的函數,這些函數主要是在高性能的c++中完成的,并且使用多線程,使其速度非常快。

它還包括各種形態(tài)操作,如侵蝕,擴張和連接成分分析。這些操作是圖像二值化、去噪和形狀分析等任務的基礎。這些功能OpenCV 都有,但是Mahotas更專注于圖像的圖像處理,而并不像OpenCV那樣什么都有,所以,Mahotas的API更簡單、也更友好。并且學習起來也比OpenCV簡單,但是速度方面卻差不多。

例子

這是一個簡單的示例(使用 mahotas 附帶的示例文件),使用上述閾值區(qū)域作為種子調用分水嶺(我們使用 Otsu 定義閾值)。

# import using ``mh`` abbreviation which is common:
import mahotas as mh
# 強烈建議關注@公眾號:數據STUDIO 更多好文定時推送
# Load one of the demo images
im = mh.demos.load('nuclear')

# Automatically compute a threshold
T_otsu = mh.thresholding.otsu(im)

# Label the thresholded image (thresholding is done with numpy operations
seeds,nr_regions = mh.label(im > T_otsu)

# Call seeded watershed to expand the threshold
labeled = mh.cwatershed(im.max() - im, seeds)

這是一個非常簡單的使用示例mahotas.distance(計算距離圖):

import pylab as p
import numpy as np
import mahotas as mh

f = np.ones((256,256), bool)
f[200:,240:] = False
f[128:144,32:48] = False
# f is basically True with the exception of two islands: one in the lower-right
# corner, another, middle-left

dmap = mh.distance(f)
p.imshow(dmap)
p.show()
4、Scikit-Image

Scikit-Image建立在Scikit-Learn機器學習庫的基礎上的擴展功能,包括更高級的圖像處理能力。所以如果已經在使用Scikit進行ML,那么可以考慮使用這個庫。

它提供了一套完整的圖像處理算法。它支持圖像分割、幾何變換、色彩空間操作和過濾。

與許多其他庫不同,Scikit-Image支持多維圖像,這對于涉及視頻或醫(yī)學成像的任務是很有幫助的。Scikit-Image與其他Python科學庫(如NumPy和SciPy)無縫集成。

from skimage import data, io, filters

image = data.coins()
# ... or any other NumPy array!
edges = filters.sobel(image)
io.imshow(edges)
io.show()

5、TensorFlow Image

TensorFlow Image是TensorFlow的一個模塊,它支持圖像解碼、編碼、裁剪、調整大小和轉換。還可以利用TensorFlow的GPU支持,為更大的數據集提供更快的圖像處理。

也就是說如果你使用TF,那么可以使用它來作為訓練Pipline的一部分。

使用 Keras 效用函數加載數據:tf.keras.utils.image_dataset_from_directory 效用函數從磁盤加載圖像。

創(chuàng)建數據集,為加載器定義一些參數:

batch_size = 32
img_height = 180
img_width = 180

開發(fā)模型時,最好使用驗證拆分。您將使用 80% 的圖像進行訓練,20% 的圖像進行驗證。

train_ds = tf.keras.utils.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset='training',
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)
6、PyTorch Vision

與TensorFlow Image類似,PyTorch Vision是PyTorch生態(tài)系統(tǒng)的一部分,主要用于與圖像處理相關的機器學習任務。

import torchvision
video_path = 'path to a test video'
reader = torchvision.io.VideoReader(video_path, 'video')
reader_md = reader.get_metadata()
print(reader_md['video']['fps'])
video.set_current_stream('video:0')
7、SimpleCV

SimpleCV建立在OpenCV、PIL(Python Imaging Library)和NumPy之上,為用戶提供了一組簡單而強大的函數和工具,用于加載、處理和分析圖像。

SimpleCV的設計目標是使計算機視覺技術對于初學者和非專業(yè)人士也能更加可靠和易于使用。它提供了一個簡單的API,隱藏了底層的復雜性,使用戶能夠快速實現常見的計算機視覺任務。

但是目前官方維護也較少,所以這個項目很有可能會夭折。

import SimpleCV
camera = SimpleCV.Camera()
image = camera.getImage()
image.show()
8、Imageio

Imageio是一個用于讀取和寫入多種圖像格式的Python庫。它提供了一個簡單而強大的API,使用戶能夠輕松地處理圖像和視頻數據。Imageio提供了一個通用的數據模型,使用戶能夠以多種方式存儲圖像數據。它可以使用NumPy數組、PIL圖像對象或簡單的Python字節(jié)字符串來表示圖像數據。并且它提供了逐幀讀取和寫入視頻文件的功能,這對于處理視頻流或從視頻中提取幀非常有用。

import imageio.v3 as iio
im = iio.imread('imageio:chelsea.png')  # read a standard image
im.shape  # im is a NumPy array of shape (300, 451, 3)
iio.imwrite('chelsea.jpg', im)  # convert to jpg
9、albumentations

Albumentations是一個用于圖像增強和數據增強的Python庫。它專注于在機器學習和計算機視覺任務中提供高效、靈活和易于使用的數據增強方法。

我一直把這個庫當成torchvision的替代,因為它不僅有很多數據增強方法,還能夠直接處理掩碼bbox的增強。

import albumentations as A
import cv2

# Declare an augmentation pipeline
transform = A.Compose([
    A.RandomCrop(width=256, height=256),
    A.HorizontalFlip(p=0.5),
    A.RandomBrightnessContrast(p=0.2),
])

# Read an image with OpenCV and convert it to the RGB colorspace
image = cv2.imread('image.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Augment an image
transformed = transform(image=image)
transformed_image = transformed['image']
10、timm

timm是一個PyTorch模型庫,雖然可能和圖像處理沒有關系,但是它提供了廣泛的預訓練模型和計算機視覺模型的集合,這對我們來進行深度學習的時候是非常有幫助的?,F在它已經是huggingface的子項目了,這意味著這個項目有了資金的支持,所以不會擔心發(fā)展的問題。

import timm 
import torch

model = timm.create_model('resnet34')
x     = torch.randn(13224224)
model(x).shape
總結

無論你是剛開始基本的圖像處理還是探索高級機器學習模型,這些庫都為廣泛的圖像處理任務提供了必要的工具。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多