欢迎访问宙启技术站
智能推送

Python处理图像和视频的函数合集

发布时间:2023-05-21 10:28:51

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