在當(dāng)今這個(gè)社會(huì),數(shù)據(jù)就是財(cái)富,數(shù)據(jù)就是金錢,一切都離不開數(shù)據(jù),我們看到的一切圖片,本質(zhì)上都是數(shù)據(jù),如何理解和處理這些圖像數(shù)據(jù)是很大的難題,不過慶幸的是,在 python 中,已經(jīng)有了非常豐富的擴(kuò)展來幫助我們處理這些圖片。
opencv
opencv 是一個(gè)非常流行的數(shù)據(jù)可視化圖形庫,它底層使用 c++進(jìn)行開發(fā),擁有非常高效的執(zhí)行效率。

安裝使用它非常簡單。
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è)非常流行的圖像處理庫,和 opencv 相比,它更加輕量級(jí),雖然本身功能簡單,但是它支持?jǐn)U展,通過擴(kuò)展可以執(zhí)行非常強(qiáng)大的功能。
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é)研究的圖形處理庫,旨在使用 Numpy 和 Scipy 庫處理圖像。它包括各種科學(xué)算法,例如分割、顏色空間操作、分析、形態(tài)學(xué)等。該庫是使用 Python 和 C 編程語言編寫的。它適用于所有流行的操作系統(tǒng),例如 Linux、macOS 和 Windows。
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ì)算庫,它提供了廣泛的數(shù)學(xué)特性,如數(shù)組、線性代數(shù)、基本統(tǒng)計(jì)運(yùn)算、隨機(jī)模擬、邏輯排序、搜索、形狀操作等。
通過對(duì)圖片的運(yùn)算處理,可以實(shí)現(xiàn)圖片的灰度化。
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ī)視覺庫。它是用 C++設(shè)計(jì)的,它包含許多提高圖像處理速度的算法。此外,它使用 NumPy 數(shù)組在矩陣中使用圖像。分水嶺、凸點(diǎn)計(jì)算 hit & miss 卷積和 Sobel 邊緣是該庫中可用的主要功能。
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)建的,用于提供簡化的界面。它支持不同的編程語言,例如 Python、R、C++、Java、C#、Ruby、TCL 和 Lua。

該庫支持 2D、3D 和 4D 圖像。與其他 Python 圖像處理庫和框架相比,該庫的圖像處理速度非常快。
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è)綜合庫,用于在 Python 中創(chuàng)建靜態(tài)、動(dòng)畫和交互式可視化。Matplotlib 讓簡單的事情變得簡單,讓困難的事情成為可能。它可以配合 Numpy 來讀取圖像數(shù)據(jù)。
# 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()