Python处理图像和视频的函数合集
Python是一种功能强大且灵活的计算机编程语言,可用于处理和分析各种类型的数据,包括图像和视频。Python生态系统提供了许多处理图像和视频的库和函数,包括标准库中的模块和第三方库。本文将介绍一些常用的Python处理图像和视频的函数。
一、图像处理函数
1.读取图像
读取图像是处理图像的 步。Python提供了许多读取图像的函数。标准库中最常用的方法是PIL(Python Imaging Library)和OpenCV(Open Source Computer Vision Library)库。PIL库支持多种图像格式,包括JPEG,BMP,PNG等,而OpenCV库支持大量的图像和视频格式,如JPEG,BMP,PNG,AVI等。以下是PIL库和OpenCV库读取图像的示例代码。
PIL库:
from PIL import Image
img = Image.open('image.jpg')
img.show()
OpenCV库:
import cv2
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.保存图像
Python还提供了多种保存图像的函数。PIL库和OpenCV库都支持将图像保存为多种格式,如JPEG,BMP,PNG等。以下是PIL库和OpenCV库保存图像的示例代码。
PIL库:
from PIL import Image
img = Image.open('image.jpg')
img.save('new_image.png')
OpenCV库:
import cv2
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
cv2.imwrite('new_image.jpg', img)
3.调整图像大小和缩放
调整图像大小和缩放是图像处理中一个重要的功能。PIL库提供了resize()函数和thumbnail()函数,用于调整图像大小和创建缩略图。OpenCV库提供了resize()函数,可以对图像进行调整大小和缩放。以下是PIL库和OpenCV库调整图像大小和缩放的示例代码。
PIL库:
from PIL import Image
img = Image.open('image.jpg')
img_resized = img.resize((400, 300))
img_resized.show()
img_thumbnail = img.copy()
img_thumbnail.thumbnail((100, 100))
img_thumbnail.show()
OpenCV库:
import cv2
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
img_resized = cv2.resize(img, (400, 300))
cv2.imshow('image', img_resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
4.旋转和翻转图像
旋转和翻转图像通常用于图像处理中的数据增强。PIL库和OpenCV库都提供了旋转和翻转图像的函数。以下是PIL库和OpenCV库旋转和翻转图像的示例代码。
PIL库:
from PIL import Image
img = Image.open("image.jpg")
img_rotated = img.rotate(45) # 顺时针旋转45度
img_rotated.show()
img_flipped = img.transpose(method=Image.FLIP_LEFT_RIGHT) # 水平翻转
img_flipped.show()
OpenCV库:
import cv2
import numpy as np
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
rows, cols, _ = img.shape
# 顺时针旋转45度
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)
img_rotated = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow('image', img_rotated)
# 垂直翻转
img_flipped = cv2.flip(img, 0)
cv2.imshow('image', img_flipped)
# 水平翻转
img_flipped = cv2.flip(img, 1)
cv2.imshow('image', img_flipped)
cv2.waitKey(0)
cv2.destroyAllWindows()
5.裁剪图像
裁剪图像是将图像中的一部分截取出来,常用于创建缩略图和图像分割。PIL库和OpenCV库都支持裁剪图像的功能。以下是PIL库和OpenCV库裁剪图像的示例代码。
PIL库:
from PIL import Image
img = Image.open('image.jpg')
img_cropped = img.crop((100, 100, 300, 300))
img_cropped.show()
OpenCV库:
import cv2
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
# 从坐标(100, 100)截取大小为(200, 200)的区域
img_cropped = img[100:300, 100:300]
cv2.imshow('image', img_cropped)
cv2.waitKey(0)
cv2.destroyAllWindows()
6.添加文本和图形
在图像中添加文本和图形通常用于创建数据集和数据标注。PIL库和OpenCV库都支持在图像中添加文本和图形的功能。以下是PIL库和OpenCV库添加文本和图形的示例代码。
PIL库:
from PIL import Image, ImageDraw, ImageFont
img = Image.open('image.jpg')
draw = ImageDraw.Draw(img)
# 在坐标(10, 10)处添加文本
text = 'Hello World'
font = ImageFont.truetype('arial.ttf', 20) # 设置字体和大小
draw.text((10, 10), text, font=font)
# 在坐标(50, 50)处添加矩形框
draw.rectangle((50, 50, 200, 200), outline=(255, 0, 0), width=2)
img.show()
OpenCV库:
import cv2
import numpy as np
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
# 在坐标(10, 10)处添加文本
text = 'Hello World'
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, text, (10, 50), font, 1, (0, 0, 255), 2)
# 在坐标(50, 50)处添加矩形框
cv2.rectangle(img, (50, 50), (200, 200), (0, 0, 255), 2)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
二、视频处理函数
1.读取视频
读取视频是处理视频的 步。OpenCV库主要用于视频处理,提供了多种读取视频的函数。以下是OpenCV库读取视频的示例代码。
import cv2
cap = cv2.VideoCapture('video.mp4')
while cap.isOpened():
ret, frame = cap.read()
if ret:
cv2.imshow('frame', frame)
if cv2.waitKey(25) & 0xFF == ord('q'): # 按q键退出
break
else:
break
cap.release()
cv2.destroyAllWindows()
2.保存视频
保存视频是视频处理中的重要步骤。OpenCV库提供了多种保存视频的函数。以下是OpenCV库保存视频的示例代码。
import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():
ret, frame = cap.read()
if ret:
out.write(frame)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'): # 按q键退出
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
3.截取视频帧
截取视频帧用于视频分析和数据集创建。OpenCV库提供了将视频帧保存为图像的函数。以下是OpenCV库截取视频帧的示例代码。
`python
import cv2
