午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

10 個(gè)圖像處理的Python庫!

 goldbomb 2023-10-20 發(fā)布于四川

轉(zhuǎn)自:網(wǎng)絡(luò)

在這篇文章中,我們將整理計(jì)算機(jī)視覺項(xiàng)目中常用的Python庫,如果你想進(jìn)入計(jì)算機(jī)視覺領(lǐng)域,可以先了解下本文介紹的庫,這會(huì)對(duì)你的工作很有幫助。

1、PIL/Pillow

Pillow是一個(gè)通用且用戶友好的Python庫,提供了豐富的函數(shù)集和對(duì)各種圖像格式的支持,使其成為開發(fā)人員在其項(xiàng)目中處理圖像的必要工具。

它支持打開、操作和保存許多不同的圖像文件格式,用戶還可以對(duì)圖像執(zhí)行基本操作,如裁剪、調(diào)整大小、旋轉(zhuǎn)和更改圖像顏色。

Pillow還可以讓你在圖像上添加文字和形狀,提供一種簡單的方式來注釋你的視覺效果。

這個(gè)庫也是torchvison使用的圖像處理庫,它功能強(qiáng)大并且使用很簡單推薦使用。

圖片2、OpenCV (Open Source Computer Vision Library)

OpenCV無疑是最流行的圖像處理庫之一。它最初由英特爾公司開發(fā),已被廣泛應(yīng)用于計(jì)算機(jī)視覺領(lǐng)域。它支持無數(shù)與計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)相關(guān)的算法,這有助于理解視覺數(shù)據(jù)并做出有見地的決策。OpenCV還針對(duì)實(shí)時(shí)應(yīng)用進(jìn)行了高度優(yōu)化,使其成為視頻監(jiān)控,自動(dòng)駕駛汽車和先進(jìn)機(jī)器人的絕佳選擇。

OpenCV 功能最多,并且在處理速度方面要比Pillow快,所以在對(duì)于速度有要求的情況下推薦使用它。

另外一點(diǎn)就是OpenCV 讀取的通道是BGR ,而其他的庫都是RGB 的,所以如果混用的話需要轉(zhuǎn)換,還記得這個(gè)代碼吧:

 cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

圖片

3、Mahotas

Mahotas包括一組用于圖像處理和計(jì)算機(jī)視覺的函數(shù),這些函數(shù)主要是在高性能的c++中完成的,并且使用多線程,使其速度非??臁?/p>

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

圖片

例子

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

# import using ``mh`` abbreviation which is common:
import mahotas as mh
# 強(qiáng)烈建議關(guān)注@公眾號(hào):數(shù)據(jù)STUDIO 更多好文定時(shí)推送
# 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)

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

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機(jī)器學(xué)習(xí)庫的基礎(chǔ)上的擴(kuò)展功能,包括更高級(jí)的圖像處理能力。所以如果已經(jīng)在使用Scikit進(jìn)行ML,那么可以考慮使用這個(gè)庫。

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

與許多其他庫不同,Scikit-Image支持多維圖像,這對(duì)于涉及視頻或醫(yī)學(xué)成像的任務(wù)是很有幫助的。Scikit-Image與其他Python科學(xué)庫(如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的一個(gè)模塊,它支持圖像解碼、編碼、裁剪、調(diào)整大小和轉(zhuǎn)換。還可以利用TensorFlow的GPU支持,為更大的數(shù)據(jù)集提供更快的圖像處理。

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

圖片

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

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

batch_size = 32
img_height = 180
img_width = 180

開發(fā)模型時(shí),最好使用驗(yàn)證拆分。您將使用 80% 的圖像進(jìn)行訓(xùn)練,20% 的圖像進(jìn)行驗(yàn)證。

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)的一部分,主要用于與圖像處理相關(guān)的機(jī)器學(xué)習(xí)任務(wù)。

圖片
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之上,為用戶提供了一組簡單而強(qiáng)大的函數(shù)和工具,用于加載、處理和分析圖像。

SimpleCV的設(shè)計(jì)目標(biāo)是使計(jì)算機(jī)視覺技術(shù)對(duì)于初學(xué)者和非專業(yè)人士也能更加可靠和易于使用。它提供了一個(gè)簡單的API,隱藏了底層的復(fù)雜性,使用戶能夠快速實(shí)現(xiàn)常見的計(jì)算機(jī)視覺任務(wù)。

但是目前官方維護(hù)也較少,所以這個(gè)項(xiàng)目很有可能會(huì)夭折。

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

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

圖片
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是一個(gè)用于圖像增強(qiáng)和數(shù)據(jù)增強(qiáng)的Python庫。它專注于在機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺任務(wù)中提供高效、靈活和易于使用的數(shù)據(jù)增強(qiáng)方法。

我一直把這個(gè)庫當(dāng)成torchvision的替代,因?yàn)樗粌H有很多數(shù)據(jù)增強(qiáng)方法,還能夠直接處理掩碼bbox的增強(qiáng)。

圖片
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是一個(gè)PyTorch模型庫,雖然可能和圖像處理沒有關(guān)系,但是它提供了廣泛的預(yù)訓(xùn)練模型和計(jì)算機(jī)視覺模型的集合,這對(duì)我們來進(jìn)行深度學(xué)習(xí)的時(shí)候是非常有幫助的?,F(xiàn)在它已經(jīng)是huggingface的子項(xiàng)目了,這意味著這個(gè)項(xiàng)目有了資金的支持,所以不會(huì)擔(dān)心發(fā)展的問題。圖片

import timm 
import torch

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

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多