码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python OpenCV 视频抽帧处理并保存


    上篇文章中基于OpenCV实现图像处理后,类似的,也可以对视频进行处理。OpenCV库可以将视频的每一帧读取出来,然后对每一帧图像做相应的操作,并保存成新的视频。

    1.  读取视频,获取相关参数

    1. import cv2
    2. import numpy as np
    3. capture = cv2.VideoCapture(video_name)
    4. width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
    5. height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
    6. fps = int(capture.get(cv2.CAP_PROP_FPS))
    7. frame_count = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))

    2. 设置图像处理参数

    1. # 设置R/G/B因子
    2. red = 149
    3. green = 126
    4. blue = 91
    5. red_factor = np.full((height, width), red-127, dtype="uint8") # 创建与image相同大小的矩阵
    6. green_factor = np.full((height, width), green-127, dtype="uint8") # 创建与image相同大小的矩阵
    7. blue_factor = np.full((height, width), blue-127, dtype="uint8") # 创建与image相同大小的矩阵

    3. 设置保存的视频的信息

    1. # 设置视频格式
    2. fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    3. # 调用VideoWrite()函数
    4. size = (int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    5. video_writer = cv2.VideoWriter(video_name_output, fourcc, fps, size)

    4. 逐帧处理视频图像并保存

    1. while True:
    2. ret, image = capture.read()
    3. if not ret:
    4. break
    5. B, G, R = cv2.split(image) # 分离出图片的B,R,G颜色通道
    6. R_temp = R + red_factor
    7. G_temp = G + green_factor
    8. B_temp = B + blue_factor
    9. output = cv2.merge([B_temp, G_temp, R_temp])
    10. if not video_writer is False:
    11. video_writer.write(output)
    12. k = cv2.waitKey(20)
    13. # q键退出
    14. if k & 0xff == ord('q'):
    15. break

  • 相关阅读:
    软件测试技术之如何编写测试用例(4)
    cordova 使用
    高并发-防止雪崩与穿透
    -0001-11-30 00:00:00 如何处理返回‘-0001-11-30 00:00:00‘的MySQl null日期
    肝了五万字把SQL数据库从基础到高级所有命令写的明明白白,内容实在丰富,MySQL这一篇就够了
    Linux操作系统讲义大全
    conan 报错 HTTPSConnectionPool(host=‘center.conan.io‘, port=443):
    Paragon NTFS for Mac工具优势
    spring ioc原理剖析上不包括DI
    蓝桥杯每日一题2023.10.22
  • 原文地址:https://blog.csdn.net/wgwg1985/article/details/134421683
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号