前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用opencv处理多媒体数据

使用opencv处理多媒体数据

原创
作者头像
languageX
发布2023-11-14 20:52:50
2890
发布2023-11-14 20:52:50
举报
文章被收录于专栏:计算机视觉CV计算机视觉CV

OpenCV做图像处理的同学应该特别熟悉。Open Source Computer Vision Library 开源的计算器视觉库。

我之前写过如何根据自己的需求编译opencv库。

Windows编译opencv库

Linux编译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动图以及三种格式的互换。

安装opencv库

我们使用python库完成后续的操作,所以使用pip进行安装。

代码语言:javascript
复制
pip install opencv_python

opencv读取图片

opencv读写图像很简单,imread和imwrite。

代码语言:javascript
复制
import cv2
# 读取图片
img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)
# 显示图片
cv2.imshow('image', img)
cv2.destroyAllWindows()

opencv读取视频

代码语言:javascript
复制
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()

opencv将图片转视频

代码语言:javascript
复制
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文件已生成。")

opencv读gif

这里读gif和读视频是同样的方式

代码语言:javascript
复制
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()

opencv将图片转gif动图

代码语言:javascript
复制
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

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装opencv库
  • opencv读取图片
  • opencv读取视频
  • opencv将图片转视频
  • opencv读gif
  • opencv将图片转gif动图
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档