📅  最后修改于: 2023-12-03 14:56:01.532000             🧑  作者: Mango
图像处理在今天的计算机应用程序中越来越重要。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的基本图像处理技术,包括图像加载、显示、转换、旋转、裁剪和翻转。