第十四篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化处理图像

传奇开心果博文系列

  • 系列博文目录
    • Python自动化办公库技术点案例示例系列
  • 博文目录
    • 前言
    • 一、Python自动化图像处理的优点介绍
    • 二、Python常用图像处理库和功能介绍
    • 三、强大且易于上手示例代码
    • 四、丰富的算法资源示例代码
    • 五、批量处理图片示例代码
    • 六、支持多种图像格式示例代码
    • 七、跨平台性示例代码
    • 八、集成深度学习技术示例代码
    • 九、PIL (Pillow)示例代码
    • 十、OpenCV示例代码
    • 十一、NumPy示例代码
    • 十二、 Scikit-image示例代码
    • 十三、SimpleITK示例代码
    • 十四、pgmagick示例代码
    • 十五、Pycairo示例代码
    • 十六、知识点归纳

系列博文目录

Python自动化办公库技术点案例示例系列

博文目录

前言

在这里插入图片描述

Python自动化处理图像, 对图像进行批量编辑、格式转换、尺寸调整等操作,满足各行各业不同场景下的图像需求。在各行各业图像自动化处理方面都发挥着重要作用。Python在图像处理方面不仅提供了丰富的功能和算法,而且具有良好的用户体验和高效率的执行能力,这使得它在图像处理领域得到了广泛的应用。无论是进行日常的图片编辑工作,还是开展专业的图像分析研究,Python都是一个值得考虑的选择。

一、Python自动化图像处理的优点介绍

在这里插入图片描述

使用Python进行图像处理具有多方面的优点,主要包括:

  • 功能强大且易于上手:Python拥有多个强大的图像处理库,如Pillow、OpenCV等,它们提供了从基础到高级的图像处理功能。Pillow库特别适合进行简单的图像处理操作,它直观易用,支持图像读取、保存、转换、编辑和颜色处理等多种功能。
  • 丰富的算法资源:Python社区提供了大量的图像处理算法,这些算法可以帮助开发者快速实现图像预处理、增强、复原、分割、分类和检测等任务。
  • 适合批量处理:对于需要处理大量图像数据的任务,Python不仅能够提供高效的处理能力,还能够通过脚本轻松实现批量自动化处理,大大提高了工作效率。
  • 支持多种图像格式:Python的图像处理库支持多种图像格式,这意味着无论是常见的JPEG、PNG还是专业的图像格式,Python都能够轻松应对。
  • 跨平台性:Python是一种跨平台的语言,可以在Windows、MacOS和Linux等多种操作系统上运行,这为图像处理带来了极大的灵活性。
  • 集成深度学习技术:随着深度学习在图像处理领域的广泛应用,Python提供了TensorFlow、Keras等深度学习框架,使得在图像处理中集成复杂的深度学习模型变得简单快捷。

在这里插入图片描述
在这里插入图片描述

二、Python常用图像处理库和功能介绍

在这里插入图片描述

在这里插入图片描述

Python在图像处理方面表现出色,提供了多种库来支持不同的图像操作需求。以下是一些常用的库及其功能:

  1. PIL (Pillow):这是Python中最受欢迎的基础图像处理库之一,它提供了一系列基本的图像处理功能,如缩放、裁剪、旋转和颜色转换等。
  2. OpenCV:这是一个开源的计算机视觉库,它包含了成千上万的优化算法,用于检测和识别面部、识别对象、分类人类活动、跟踪相机运动、追踪移动物体等。
  3. NumPy:虽然NumPy本身不是图像处理库,但由于其在科学计算中的广泛使用,特别是在数组和矩阵操作上,它常与图像处理库一起使用以提高效率和性能。
  4. Scikit-image:基于scikit-learn设计的图像处理库,它提供了许多高级图像处理功能,包括图像去噪、几何变换、颜色空间操作等。
  5. SimpleITK:这是基于Insight Segmentation and Registration Toolkit (ITK)构建的一个简化层,它支持多种常规的滤波、图像分割和图像配准功能,特别适用于医学图像处理。
  6. pgmagick:这是对GraphicsMagick库的Python封装。GraphicsMagick支持多达88种主流格式的图像文件,而pgmagick使得这些功能可以在Python中轻松使用。
  7. Pycairo:Cairo是一个二维图形库,用于绘制矢量图,而Pycairo为其提供了Python绑定。这使得开发者可以在Python中使用Cairo进行矢量图的绘制和编辑。

综上所述,Python通过这些强大的库为图像处理提供了丰富的工具和方法。从基本的图像编辑到复杂的图像分析,Python能够满足不同层次的需求。

在这里插入图片描述

三、强大且易于上手示例代码

在这里插入图片描述

1.pillow库

from PIL import Image

# 读取图像文件
image = Image.open("example.jpg")

# 调整图像尺寸
resized_image = image.resize((800, 600))

# 旋转图像
rotated_image = image.rotate(90)

# 裁剪图像
cropped_image = image.crop((100, 100, 300, 300))

# 保存图像
resized_image.save("resized_example.jpg")
rotated_image.save("rotated_example.jpg")
cropped_image.save("cropped_example.jpg")

上述代码演示了使用Pillow库进行简单的图像处理操作。首先,通过Image.open()函数读取图像文件。然后,使用resize()方法调整图像的尺寸,使用rotate()方法旋转图像,使用crop()方法裁剪图像。最后,通过save()方法将处理后的图像保存到文件中。这些操作都非常简单直观,适合初学者入门。

在这里插入图片描述

2.OpenCV
以下是使用OpenCV进行图像处理的示例代码:

import cv2

# 读取图像
img = cv2.imread('image.jpg')

# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 调整亮度和对比度
alpha = 1.5 # 对比度系数
beta = 50   # 亮度增量
adjusted_img = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)

# 保存图像
cv2.imwrite('adjusted_image.jpg', adjusted_img)

# 灰度化
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 边缘检测
edges = cv2.Canny(gray_img, 100, 200)

# 轮廓检测
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0, 255, 0), 3)

# 显示结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上代码演示了如何使用OpenCV进行基本的图像处理操作,包括读取、显示、调整亮度和对比度、灰度化、边缘检测、轮廓检测等。这些操作可以帮助我们更好地理解和分析图像数据。
上面这些示例代码充分显现Python库处理图像强大而且易于上手的特点。

在这里插入图片描述

四、丰富的算法资源示例代码

在这里插入图片描述

在这里插入图片描述

以下是使用Python丰富的算法资源进行图像预处理、增强、分割、分类和检测的示例代码:

import cv2
import numpy as np
from sklearn.cluster import KMeans
from skimage.feature import hog
from skimage.transform import resize
from keras.models import load_model

# 读取图像
img = cv2.imread('image.jpg')

# 灰度化
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 边缘检测
edges = cv2.Canny(gray_img, 100, 200)

# 轮廓检测
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0, 255, 0), 3)

# 图像分割
mask = np.zeros(gray_img.shape[:2], dtype=np.uint8)
for i in range(len(contours)):
    cv2.drawContours(mask, [contours[i]], -1, (255), thickness=-1)
segmented_img = cv2.bitwise_and(gray_img, gray_img, mask=mask)

# 图像增强
enhanced_img = cv2.equalizeHist(segmented_img)

# 图像分类
model = load_model('model.h5')
resized_img = resize(enhanced_img, (64, 64))
flattened_img = resized_img.flatten()
prediction = model.predict(flattened_img.reshape(1, -1))
class_label = np.argmax(prediction)

# 显示结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上代码演示了如何使用Python进行图像预处理、增强、分割、分类和检测等操作。这些操作可以帮助我们更好地理解和分析图像数据。

在这里插入图片描述

五、批量处理图片示例代码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

以下是一个使用Python和PIL库(Python Imaging Library)进行批量处理图像的简单示例,假设我们有一个目录下包含大量JPG格式的图片,我们需要将它们全部转换为PNG格式并减小尺寸到800x800像素:

from PIL import Image
import os

# 指定源文件夹与目标文件夹
src_folder = 'path/to/source/folder'
dst_folder = 'path/to/destination/folder'

# 确保目标文件夹存在,否则创建
if not os.path.exists(dst_folder):
    os.makedirs(dst_folder)

# 遍历源文件夹中的所有jpg文件
for filename in os.listdir(src_folder):
    if filename.endswith('.jpg'):
        src_path = os.path.join(src_folder, filename)
        dst_path = os.path.join(dst_folder, filename.replace('.jpg', '.png'))

        # 打开图像
        with Image.open(src_path) as im:
            # 缩放到指定尺寸
            im_resized = im.resize((800, 800), Image.ANTIALIAS)

            # 保存为PNG格式
            im_resized.save(dst_path, format='PNG')

print("批量图像处理完成.")

这段代码首先导入了所需的库,然后定义了源文件夹和目标文件夹的路径。接着,它检查目标文件夹是否存在,如果不存在则创建。接下来,通过os.listdir()遍历源文件夹中所有以.jpg结尾的文件。对每个文件,代码打开图像、对其进行缩放操作,并将结果保存为PNG格式到目标文件夹。

这个示例展示了如何使用Python进行批量图像处理,包括打开、操作(如缩放)和保存图像。根据实际需求,你可以修改或扩展这段代码来执行其他类型的图像处理任务,如调整亮度、对比度、旋转、添加水印等。

在这里插入图片描述

以下是使用Python和PIL库进行批量调整图像亮度、对比度、旋转,并添加水印的示例代码:

from PIL import Image, ImageEnhance, ImageDraw, ImageFont
import os

# 指定源文件夹与目标文件夹
src_folder = 'path/to/source/folder'
dst_folder = 'path/to/destination/folder'

# 确保目标文件夹存在,否则创建
if not os.path.exists(dst_folder):
    os.makedirs(dst_folder)

# 设置水印文本与字体相关参数
watermark_text = "Your Watermark Text"
font_path = 'path/to/font.ttf'  # 替换为你的字体文件路径
font_size = 30
text_color = (255, 255, 255, 128)  # 半透明白色

# 遍历源文件夹中的所有jpg文件
for filename in os.listdir(src_folder):
    if filename.endswith('.jpg'):
        src_path = os.path.join(src_folder
评论 74
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

传奇开心果编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值