在當(dāng)今這個(gè)社會(huì),數(shù)據(jù)就是財(cái)富,數(shù)據(jù)就是金錢,一切都離不開數(shù)據(jù),我們看到的一切圖片,本質(zhì)上都是數(shù)據(jù),如何理解和處理這些圖像數(shù)據(jù)是很大的難題,不過(guò)慶幸的是,在 Python/ target=_blank class=infotextkey>Python 中,已經(jīng)有了非常豐富的擴(kuò)展來(lái)幫助我們處理這些圖片。
opencv
opencv 是一個(gè)非常流行的數(shù)據(jù)可視化圖形庫(kù),它底層使用 c++進(jìn)行開發(fā),擁有非常高效的執(zhí)行效率。
安裝使用它非常簡(jiǎn)單。
pip install opencv-python
# import opencv import cv2 # Read the image image = cv2.imread('tesla.png') # grayscale the image gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.imshow('Original Image', image) cv2.imshow('Grayscale Image', gray_image) cv2.waitKey(0) cv2.destroyAllwindows()
Pillow
Pillow 是另一個(gè)非常流行的圖像處理庫(kù),和 opencv 相比,它更加輕量級(jí),雖然本身功能簡(jiǎn)單,但是它支持?jǐn)U展,通過(guò)擴(kuò)展可以執(zhí)行非常強(qiáng)大的功能。
pip install pillow
from PIL import Image with Image.open("tesla.png") as im: #show the original image im.show("Original Image") #convert into grayscale grayscaleImg = im.convert("L") #show the grayscale image grayscaleImg.show()
Scikit
Scikit 是一個(gè)進(jìn)行科學(xué)研究的圖形處理庫(kù),旨在使用 numpy 和 Scipy 庫(kù)處理圖像。它包括各種科學(xué)算法,例如分割、顏色空間操作、分析、形態(tài)學(xué)等。該庫(kù)是使用 Python 和 C 編程語(yǔ)言編寫的。它適用于所有流行的操作系統(tǒng),例如 linux、macOS 和 Windows。
pip install scikit-image
from skimage import io from skimage.color import rgb2gray # way to load car image from file car = io.imread('tesla.png')[:,:,:3] #convert into grayscale grayscale = rgb2gray(car) #show the original io.imshow(car) io.show() #show the grayscale io.imshow(grayscale) io.show()
Numpy
numpy 本身是一個(gè)計(jì)算庫(kù),它提供了廣泛的數(shù)學(xué)特性,如數(shù)組、線性代數(shù)、基本統(tǒng)計(jì)運(yùn)算、隨機(jī)模擬、邏輯排序、搜索、形狀操作等。
通過(guò)對(duì)圖片的運(yùn)算處理,可以實(shí)現(xiàn)圖片的灰度化。
pip install numpy
import numpy as np import Matplotlib.pyplot as plt import matplotlib.image as mpimg #load the original image img_rgb = mpimg.imread('tesla.png')[...,:3] #show the original image plt.imshow(img_rgb) plt.show() #convert the image into grayscale img_gray = np.dot(img_rgb,[0.299, 0.587, 0.144]) #show the grayscale image plt.imshow(img_gray, cmap=plt.get_cmap('gray')) plt.show()
mahotas
Mahotas 是另一個(gè)可以執(zhí)行各種圖像處理操作的 Python 計(jì)算機(jī)視覺庫(kù)。它是用 C++設(shè)計(jì)的,它包含許多提高圖像處理速度的算法。此外,它使用 NumPy 數(shù)組在矩陣中使用圖像。分水嶺、凸點(diǎn)計(jì)算 hit & miss 卷積和 Sobel 邊緣是該庫(kù)中可用的主要功能。
pip install mahotas
import mahotas from pylab import imshow, show #read the image img = mahotas.imread('tesla.png') #show original image imshow(img) show() img = img[:, :, 0] grayscale = mahotas.overlay(img) #show grayscale image imshow(grayscale) show()
SimpleITK
SimpleITK 是一個(gè)強(qiáng)大的圖像配準(zhǔn)和分割工具包。它是作為 ITK 工具包的擴(kuò)展構(gòu)建的,用于提供簡(jiǎn)化的界面。它支持不同的編程語(yǔ)言,例如 Python、R、C++、JAVA、C#、Ruby、TCL 和 Lua。
該庫(kù)支持 2D、3D 和 4D 圖像。與其他 Python 圖像處理庫(kù)和框架相比,該庫(kù)的圖像處理速度非???。
pip install SimpleITK
import SimpleITK as sitk import matplotlib.pyplot as plt logo = sitk.ReadImage('tesla.png') # GetArrayViewFromImage returns an immutable numpy array view to the data. plt.imshow(sitk.GetArrayViewFromImage(logo)) plt.show()
Matplotlib
Matplotlib 是一個(gè)綜合庫(kù),用于在 Python 中創(chuàng)建靜態(tài)、動(dòng)畫和交互式可視化。Matplotlib 讓簡(jiǎn)單的事情變得簡(jiǎn)單,讓困難的事情成為可能。它可以配合 Numpy 來(lái)讀取圖像數(shù)據(jù)。
pip install matplotlib
# importing libraries. import matplotlib.pyplot as plt from PIL import Image # open image using pillow library image = Image.open("tesla.png") #show original image plt.imshow(image) plt.show() # grayscale the image plt.imshow(image.convert("L"), cmap='gray') plt.show()