📜  没有 OpenCV 的图像处理 | Python(1)

📅  最后修改于: 2023-12-03 14:56:01.532000             🧑  作者: Mango

没有 OpenCV 的图像处理 | Python

图像处理在今天的计算机应用程序中越来越重要。OpenCV作为一个流行的开源库,被广泛用于Python中的图像处理。

然而,如果你没有OpenCV,你仍然可以使用Python进行基本的图像处理。在本文中,我们将介绍一些不依赖OpenCV的基本图像处理方法。

导入模块

我们将使用 Python Imaging Library (PIL)模块。让我们首先导入必要的模块。

from PIL import Image
import numpy as np
加载图像

我们可以使用PIL模块中的 Image.open 方法来加载图像。这个方法用于从文件打开图像,并且会返回一个表示图像的对象。我们可以打印图像的一些信息:

# 加载图像
im = Image.open("test_image.jpg")

# 打印图像信息
print("图像大小:", im.size)
print("图像模式:", im.mode)

输出:

图像大小: (400, 400)
图像模式: RGB
显示图像

我们可以使用PIL模块中的 show() 方法来显示图像。这将启动系统默认的图像查看器,并显示图像。

# 显示图像
im.show()
将图像转换为灰度

使用数组,我们可以很容易地转换彩色图像为灰度。请注意,在这种情况下,输出的图像是单通道的。

# 将图像转换为数组
im_array = np.array(im)

# 将数组转换为灰度图像数组
gray_im_array = np.mean(im_array, axis=2)

# 创建灰度图像对象
gray_im = Image.fromarray(gray_im_array.astype(np.uint8))

# 保存灰度图像
gray_im.save("gray_test_image.jpg")

# 显示灰度图像
gray_im.show()
旋转图像

我们可以使用PIL模块中的 rotate 方法来旋转图像。该方法接受一个角度作为参数,并返回一个旋转后的图像对象。

# 旋转角度
angle = 45

# 创建旋转后的图像对象
rot_im = im.rotate(angle)

# 显示旋转后的图像
rot_im.show()
裁剪图像

使用PIL模块中的 crop 方法,我们可以轻松裁剪图像。该方法接受四个参数,分别为左侧边界、上侧边界、右侧边界和下侧边界。这四个参数如果作为元组传递,也可以用于指定裁剪区域。

# 裁剪区域
left = 100
top = 100
right = 300
bottom = 300

# 裁剪图像
cropped_im = im.crop((left, top, right, bottom))

# 显示裁剪后的图像
cropped_im.show()
反转图像

我们可以使用数组来翻转图像。使用Numpy中的 flip 方法可以从上到下和左到右翻转图像。

# 上下翻转图像
flip_ud_im_array = np.flipud(im_array)

# 左右翻转图像
flip_lr_im_array = np.fliplr(im_array)

# 创建翻转图像对象
flip_ud_im = Image.fromarray(flip_ud_im_array)
flip_lr_im = Image.fromarray(flip_lr_im_array)

# 显示翻转图像
flip_ud_im.show()
flip_lr_im.show()
总结

尽管OpenCV是一个强大的图像处理库,但是使用Python和其他功能丰富的库,我们仍然可以进行基本的图像处理操作。在本文中,我们介绍了一些不依赖OpenCV的基本图像处理技术,包括图像加载、显示、转换、旋转、裁剪和翻转。