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 等等。通过这些库,我们可以轻松地完成各种图片操作,满足各种需求。