基於python----影像的表示和視覺化

跋扈洋發表於2020-10-05


經過取樣和量化之後,影像I已經稱為空間位置和響應值均離散的數字影像。影像上的每個位置(x,y)以及其對應量化響應值稱為一個畫素。

影像的表示

二維矩陣是表示數字影像的重要數字形式。一幅M*N的影像可以表示為矩陣,矩陣中的每個元素稱為影像的畫素。每個畫素都有它自己的空間位置和值,值是這一位置畫素的顏色或者強度。
與影像相關的重要指標是影像解析度。影像解析度是指組成一幅影像的畫素密度。對同樣大小的一幅圖,組成該圖的影像畫素數目越多,說明影像的解析度越高,看起來越來越逼真。相反,畫素越少,影像越粗糙。影像解析度包括空間解析度和灰度級(響應幅度)解析度。空間解析度是影像中可辯別的最小空間細節,取樣值多少是決定影像空間解析度的主要引數。

讀取

skimage

from skimage import io,data,color
from matplotlib import pyplot as plt
img=io.imread('123.jpg')
img1=data.astronaut()
print(img.shape)
img0=io.imread('123.jpg',as_gray=True)
print("影像型別:",type(img))#顯示型別
print("影像大小:",img.shape)#顯示型別
print(img.shape[0])
print(img.shape[1])
print(img.shape[2])
print(img.size)
print(img.max())
print(img.min())
print(img.mean())
print(img[0][0])
plt.subplot(211),io.imshow(img)
plt.title('Input Image'),plt.xticks([]),plt.yticks([])
plt.subplot(212),io.imshow(img0)
plt.show()

opencv

import cv2 as cv

img=cv.imread('123.jpg')

print("影像型別:",type(img))#顯示型別
print("影像大小:",img.shape)#顯示型別
print(img.shape[0])
print(img.shape[1])
print(img.shape[2])
print(img.size)
print(img.max())
print(img.min())
print(img.mean())
print(img[0][0])
img1=cv.imread('123.jpg',0)
cv.imshow('Color',img)
cv.imshow('gray',img1)
cv.waitKey(0)
cv.destroyAllWindows()

顏色通道操作

from skimage import io,data,color
from matplotlib import pyplot as plt
image=io.imread('123.jpg')
image_r=image[:,:,0]
image_g=image[:,:,1]
image_b=image[:,:,2]
plt.subplot(2,2,1)
io.imshow(image)
plt.subplot(2,2,2)
io.imshow(image_r)
plt.subplot(2,2,3)
io.imshow(image_g)
plt.subplot(2,2,4)
io.imshow(image_b)

plt.show()

編寫一個數字影像讀入,顯示,區域裁剪的程式,並分別顯示R,G,B三個通道的影像

from PIL import Image
import matplotlib.pyplot as plt
from skimage import io



img2 = io.imread('456.jpg')
img = Image.open('456.jpg')  # 開啟影像.
gray = img.convert('L')  # 轉換成灰度
r, g, b = img.split()  # 分離三通道
pic = Image.merge('RGB', (r, g, b))  # 合併三通道
plt.figure("beauty")
plt.subplot(3, 3, 1), plt.title('origin')
plt.imshow(img), plt.axis('off')
# 影像裁剪
img3 = img2[20:400, 50:1000]
plt.figure("beauty")
plt.subplot(3, 3, 7), plt.title('caijian')
plt.imshow(img3), plt.axis('off')

plt.subplot(3, 3, 4), plt.title('r')
plt.imshow(r, cmap='gray'), plt.axis('off')
plt.subplot(3, 3, 5), plt.title('g')
plt.imshow(g, cmap='gray'), plt.axis('off')
plt.subplot(3, 3, 6), plt.title('b')
plt.imshow(b, cmap='gray'), plt.axis('off')
plt.show()

後續

如果想了解更多物聯網、智慧家居專案知識,可以關注我的專案實戰專欄。
或者關注公眾號。
在這裡插入圖片描述

編寫不易,感謝支援。

相關文章