图像处理技术与应用入门
使用 skimage 进行图像读取和显示
skimage库(Scikit-image)提供了一个强大的工具集,用于执行各种图像处理任务。以下是如何使用skimage读取和显示图像的基本示例:
python
from skimage import io
img = io.imread("dd.jpg", as_gray=True)
io.imshow(img)
io.show()
读取一个名为dd.jpg的图像文件,并以灰度模式显示它。
原图
灰度图像
使用 skimage读取内置测试图像****
skimage库提供了一些内置的测试图像,可以直接使用:
python
from skimage import data
img = data.hubble_deep_field()
io.imshow(img)
显示了Hubble深空图像。
读取图像并保存
python
from skimage import data_dir,data,io
# img1 = data.hubble_deep_field()
img2 = io.imread('C:/Users/14919/OneDrive/Pictures/Screenshot_20230802_150439.jpg')
# # print(img2)
io.imshow(img2)
io.show()
io.imsave('C:/Users/14919/OneDrive/Desktop/图像处理-工坊/11.jpg',img)
使用 PIL和** skimage复制图像到新文件夹**
Python Imaging Library(PIL)的Image模块可以与skimage结合使用,以复制图像到新文件夹:
python
from PIL import Image
import os
from skimage import io
# 图片存储的文件夹路径
folder_path = 'C:/Users/14919/OneDrive/Desktop/图像处理-工坊'
# 用来保存图片的文件夹路径
output_folder_path = 'C:/Users/14919/OneDrive/Desktop/图像处理-工坊/aa'
# 确保输出文件夹存在
if not os.path.exists(output_folder_path):
os.makedirs(output_folder_path)
# 遍历文件夹中的所有图片
for filename in os.listdir(folder_path):
if filename.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
# 打开图片
img = Image.open(os.path.join(folder_path, filename))
# 保存图片到输出文件夹,同时保留原有文件名
img.save(os.path.join(output_folder_path, filename))
这段代码将遍历指定文件夹中的所有图片,并将它们保存到另一个文件夹中。
使用matplotlib和skimage分析图像属性
matplotlib库可以与skimage一起使用,以分析图像的属性:
python
import matplotlib.pyplot as plt
from skimage import io
img = io.imread("cc.jpg")
io.imshow(img)
plt.axis('off')
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())# 像素平均值
显示了图像,还输出了关于图像的重要统计信息,如尺寸、像素值等
分段写出代码效果会更好
使用 cv2 进行图像处理
cv2是OpenCV库的Python接口,它提供了广泛的图像处理和计算机视觉功能。以下是如何使用cv2调整图像大小和显示不同颜色通道的示例:
python
import cv2
img = cv2.imread('aa.jpg')
#调整图像大小为300x300
img = cv2.resize(img, (300, 300))
cv2.imshow("img show", img)
# 读取蓝色通道,最后一个值为0
b = img[:, :, 0]
# 读取绿色通道,最后一个值为 1
g = img[:, :, 1]
# 读取红色通道,最后一个值为 2
r = img[:, :, 2]
# 分别显示
cv2.imshow("b", b)
cv2.imshow("g", g)
cv2.imshow("r", r)
cv2.waitKey()
cv2.destroyAllWindows()
读取图像、调整其大小,并分别显示其红色、绿色和蓝色通道。
r为红色通道,下标值为2
g为绿色通道,下标值为1
b为蓝色通道,下标值为0