OpenCV做图像处理的同学应该特别熟悉。Open Source Computer Vision Library 开源的计算器视觉库。
我之前写过如何根据自己的需求编译opencv库。
那opencv可以用来干什么呢?
图像处理:OpenCV提供了许多图像处理功能,如图像的加载、保存、滤波、几何变换、色彩空间转换等
视频处理:OpenCV支持视频的捕获、播放、剪辑等功能。
特征提取:OpenCV提供了许多特征提取算法,如SIFT、SURF、ORB等。
目标检测:OpenCV支持多种目标检测算法,如Haar级联分类器、LBP等。
图像分割:OpenCV提供了许多图像分割算法,如分水岭算法、 GrabCut算法等。
人脸识别:OpenCV支持人脸识别算法,如基于Haar级联分类器的人脸检测。
机器学习:OpenCV提供了许多机器学习算法,如SVM、KNN、ANN等。
光流估计:OpenCV支持光流估计算法,如Lucas-Kanade算法、Farneback算法等。
三维重建:OpenCV支持三维重建算法,如从单目图像中计算深度图等。
优化:OpenCV提供了许多优化算法,如Levenberg-Marquardt算法等。
以上功能我们今天都不介绍~~~
本文介绍使用python+opencv实现最基础的媒体数据功能:
使用opencv读取图片,视频,gif动图以及三种格式的互换。
我们使用python库完成后续的操作,所以使用pip进行安装。
pip install opencv_python
opencv读写图像很简单,imread和imwrite。
import cv2
# 读取图片
img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)
# 显示图片
cv2.imshow('image', img)
cv2.destroyAllWindows()
def video_to_frames(video_path, output_path):
# 读取视频
video = cv2.VideoCapture(video_path)
frame_count = 0
while True:
ret, frame = video.read()
if ret:
frame_name = f"{output_path}/frame_{frame_count}.jpg"
cv2.imwrite(frame_name, frame)
frame_count += 1
else:
break
video.release()
def images_2_video(image_folder):
# image_folder中的图片文件系列转视频文件
output_file = 'output.mp4'
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fps = 30.0
frame_size = (1920, 1080)
# 创建VideoWriter对象
out = cv2.VideoWriter(output_file, fourcc, fps, frame_size)
for i in range(25):
frame = cv2.imread(image_folder + 'frame_{}.jpg'.format(i))
out.write(frame)
out.release()
print("MP4文件已生成。")
这里读gif和读视频是同样的方式
def gif_to_frames(gif_path, output_path):
# 读取gif文件
gif= cv2.VideoCapture(gif_path)
frame_count = 0
while True:
ret, frame = gif.read()
if ret:
frame_name = f"{output_path}/frame_{frame_count}.jpg"
cv2.imwrite(frame_name, frame)
frame_count += 1
else:
break
gif.release()
def pics_to_video(image_dir = "./gifs/"):
# 读取图片序列
image_sequence = []
for i in range(15): # 假设您有10张图片,您可以根据实际情况进行修改
image = cv2.imread(image_dir + 'frame_{}.jpg'.format(i)) # 替换为您的图片路径和文件名
image_sequence.append(image)
# 将图片序列保存为GIF文件
imageio.mimsave('output.gif', image_sequence, duration=0.2) # 替换为您想要的输出文件名和每帧的持续时间
print("GIF文件已生成。")
以上就是使用opencv读取图片,视频,gif文件的操作。在获取了数据数据后就可以进行更多操作,可以参考官方文档的示例进行实战了
https://docs.opencv.org/4.1.2/d6/d00/tutorial_py_root.html
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。