c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python图片素材的应用

更新时间:2023-12-21

前言

    在现代程序开发中,处理图片已经成为一项基本的需求。Python 作为一门流行且灵活的编程语言,为图片素材的应用提供了很多强大的可能性。本文将展示如何在 Python 中使用各种库来处理图片,包括读取和写入图片、裁剪、缩放、旋转、添加水印等等。同时本文也会涉及到一些基本的图像处理原理,非常适合想要探索 Python 图像处理的程序员。

读写图片

    import cv2

    # 读取图片
    img = cv2.imread('example.png')
    # 显示图片
    cv2.imshow('example', img)
    cv2.waitKey(0)
    # 写入图片
    cv2.imwrite('example_output.png', img)

Python 提供了很多库来处理图片,其中最常用的就是 opencv-python。在这个例子中,我们使用了 opencv-python 来读取图片、显示图片和写入图片。cv2.imread() 方法会返回一张图片,而 cv2.imshow() 方法则可以在窗口中显示图片。cv2.imwrite() 方法可以将图片写入到文件中。

图片缩放

    import cv2

    # 读取图片
    img = cv2.imread('example.png')
    # 获取图片尺寸
    height, width = img.shape[:2]
    # 缩小图片
    scaling_factor = 0.5
    scaled_height = int(height * scaling_factor)
    scaled_width = int(width * scaling_factor)
    scaled_img = cv2.resize(img, (scaled_width, scaled_height))
    # 显示图片
    cv2.imshow('example', scaled_img)
    cv2.waitKey(0)
    # 写入图片
    cv2.imwrite('example_output.png', scaled_img)

缩放是图片处理中最常见的操作之一。Python 提供了 cv2.resize() 方法来实现图片缩放。在这个例子中,我们将图片宽度和高度都缩小了一半。

图片旋转

    import cv2

    # 读取图片
    img = cv2.imread('example.png')
    # 获取图片中心点
    center = (img.shape[1] // 2, img.shape[0] // 2)
    # 旋转图片
    angle = 45
    M = cv2.getRotationMatrix2D(center, angle, 1.0)
    rotated_img = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
    # 显示图片
    cv2.imshow('example', rotated_img)
    cv2.waitKey(0)
    # 写入图片
    cv2.imwrite('example_output.png', rotated_img)

图片旋转是一项非常有用的操作,可以用于很多应用场景,比如图像识别、图像增强等。Python 提供了 cv2.getRotationMatrix2D() 方法来获取变换矩阵,并使用 cv2.warpAffine() 方法来进行旋转操作。

图片裁剪

    import cv2

    # 读取图片
    img = cv2.imread('example.png')
    # 裁剪图片
    crop_img = img[100:300, 200:400]
    # 显示图片
    cv2.imshow('example', crop_img)
    cv2.waitKey(0)
    # 写入图片
    cv2.imwrite('example_output.png', crop_img)

图片裁剪可以用于去除图片中不必要的内容或调整图片尺寸等操作。在这个例子中,我们使用了一个简单的方式来裁剪图片,即使用数组切片来选择感兴趣的区域。

添加水印

    import cv2
    import numpy as np

    # 读取图片和水印图片
    img = cv2.imread('example.png')
    watermark = cv2.imread('watermark.png', cv2.IMREAD_UNCHANGED)
    # 修改水印大小
    scale_percent = 60
    width = int(watermark.shape[1] * scale_percent / 100)
    height = int(watermark.shape[0] * scale_percent / 100)
    dim = (width, height)
    resized_watermark = cv2.resize(watermark, dim, interpolation = cv2.INTER_AREA)
    # 添加水印
    overlay = np.zeros_like(img)
    x_offset = 50
    y_offset = 50
    overlay[y_offset:y_offset+resized_watermark.shape[0], x_offset:x_offset+resized_watermark.shape[1]] = resized_watermark
    watermarked_img = cv2.addWeighted(img, 1, overlay, 0.7, 0)
    # 显示图片
    cv2.imshow('example', watermarked_img)
    cv2.waitKey(0)
    # 写入图片
    cv2.imwrite('example_output.png', watermarked_img)

添加水印是图片处理中一个十分常见的需求。在这个例子中,我们使用了 cv2.addWeighted() 方法来合并原始图片和水印图片,并使用 np.zeros_like() 方法来创建大小一致的零矩阵作为一个遮罩。最终的效果是一个透明的水印被添加到图片左上角。

总结

    本文介绍了如何使用 Python 来处理图片素材,包括读写图片、缩放、旋转、裁剪和添加水印等等。Python 提供了很多用于处理图片的库,比如 opencv-python、pillow 和 numpy 等等。通过这些库,我们可以轻松地完成各种图片操作,满足各种需求。