欢迎访问宙启技术站
智能推送

Python中实现图像处理的常用函数

发布时间:2023-06-05 11:09:06

Python是一种流行的编程语言,在图像处理方面也有很大的应用。它有众多可用的库,包括Pillow、OpenCV等等。这些库提供了很多的函数,可以帮助我们处理图片。

下面是一些Python中常用的图像处理函数:

1. 图片读取和存储函数

一般来说,你需要先打开一个文件,然后将这个图像转换为一个数组来处理。

Pillow库中打开一张图片:

from PIL import Image
img = Image.open("example.jpg")

OpenCV库中打开一张图片:

import cv2
img = cv2.imread("example.jpg")

其他一些读取和存储函数还有plt.imread()skimage.io.imread()skimage.io.imsave()等等。

2. 图片的缩放和裁剪

在处理图像时,经常需要改变它的大小。这可能是为了减少文件大小、增加分辨率,或将图片调整到适合的尺寸。

Pillow库中的缩放和裁剪:

img = Image.open("example.jpg")
img_size = img.size
img_resized = img.resize((int(img_size[0]/2), int(img_size[1]/2)))
img_cropped = img.crop((0, 0, 100, 100))

OpenCV库中的缩放和裁剪:

import cv2
img = cv2.imread("example.jpg")
img_resized = cv2.resize(img, (400, 400))
img_cropped = img[0:100, 0:100]

3. 图片的转换和通道处理

在图像处理的过程中,经常需要进行颜色空间的转换。以及在 RGB, HSV 或者 YUV 颜色空间中单独处理每个通道。

转换和通道处理:

import cv2
img = cv2.imread("example.jpg")
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
img_b, img_g, img_r = cv2.split(img)

将三个通道合并为一个的方法:

img_merged = cv2.merge((img_b, img_g, img_r))

4. 图片滤波和边缘检测

图像滤波可以去除噪点、增强图像轮廓,边缘检测可以提取图像的边缘信息。

在OpenCV库中,常用的滤波和边缘检测算法有:

import cv2
img = cv2.imread("example.jpg")
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#高斯模糊
img_blur = cv2.GaussianBlur(img_gray, (7,7), 0)

#Canny边缘检测
img_canny = cv2.Canny(img_gray, 100, 200)

5. 图片的绘图和文字

图片绘制可以用来实现一些特殊的效果,例如在图片上添加文字、矩形、椭圆、线条等等。

Pillow库中的绘图:

from PIL import Image, ImageDraw, ImageFont
img = Image.open("example.jpg")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 36)
draw.text((10, 10), "example", font=font, fill=(255,255,0))

OpenCV库中的绘图:

import cv2
img = cv2.imread("example.jpg")
cv2.rectangle(img, (100, 100), (200, 200), (0, 255, 0), 3) # 画矩形
cv2.line(img,(0,0),(511,511),(255,0,0),5) # 画线

还有很多其他的图像处理函数,例如阈值处理、形态学处理、直方图等等,需要根据实际情况选择使用。

需要注意的是,在图像处理中,经常需要对像素进行操作,这可能会导致程序效率较低。因此,可以使用一些优化方法来提高程序效率,例如并行处理和GPU加速等等。