Python中如何进行图像处理?代码举例讲解

Python提供了丰富的图像处理库,主要有:

1. Pillow:

  • Pillow是Python中最流行的图像处理库,可以轻松完成图像处理任务。
  • 用法:
from PIL import Image

img = Image.open('test.jpg')

# 图像大小
w, h = img.size  

# 缩放图像
img.thumbnail((200, 200))  

# 图像过滤
img = img.filter(ImageFilter.BLUR) 

# 图像旋转
img = img.rotate(90)  

# 图像裁剪
img = img.crop((0, 0, 100, 100))  

# 图像保存 
img.save('test2.jpg')

2. OpenCV:

  • OpenCV是一个跨平台的计算机视觉库,主要用于图像处理和计算机视觉。
  • 用法:
import cv2

img = cv2.imread('test.jpg')  

# 图像大小
h, w, c = img.shape  

# 图像缩放
img = cv2.resize(img, (200, 200))   

# 图像旋转
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)

# 图像裁剪
img = img[0:100, 0:100]  

# 人脸检测
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(img)

# 图像保存
cv2.imwrite('test2.jpg', img)

3. scikit-image:

  • scikit-image是一个Python图像处理库,基于numpy和scipy。
  • 提供更高级的图像处理功能,如图像分割.特征检测等。
  • 用法:
from skimage import io
from skimage.transform import resize
from skimage.feature import canny
from skimage.morphology import dilation, erosion

image = io.imread('test.jpg')

# 图像缩放
image_resized = resize(image, (200, 200))  

# 图像边缘检测 
edges = canny(image, sigma=3)  

# 图像膨胀和腐蚀
dilated = dilation(edges, selem=selem.disk(5))  
eroded = erosion(edges, selem=selem.disk(5))