当前位置: 首页 > article >正文

OpenCV视频处理练习案例-学习篇

需要实现的功能:

用OpenCV打开一段视频,将每一帧画面压缩成540p,对画面进行垂
直翻转,转为黑白,然后添加高斯噪声,把处理好的每一帧画面保存
成一个mp4文件保存到本地

Python代码如下:

import cv2
import numpy as np #高斯噪音需要一些数学运算

#给视频添加高斯噪声类
def add_gaussion_noise(image): #image传入的是视频中读取到的每一个画面
    rows, col = image.shape #获取这个画面的尺寸信息 有多少行rows 有多少列col
    mean = 0 #设定平均值为0
    sigma = 15 #∑ 数学中的求和号
    gauss = np.random.normal(mean, sigma, (rows, col)) #做出一个高斯噪声(纯噪声)
    noisy = image + gauss #把画面和噪声相叠加后产生带噪声的图片
    noisy_img = np.clip(noisy, 0, 255) #np.clip限定带噪声的像素值的范围在0-255
    return noisy_img.astype(np.uint8) #把图片转成整数形式返回

#输入和输出视频文件名
input_video = "./outdoor.mp4"
output_video = "./output02.mp4"

#打开输入视频
cap = cv2.VideoCapture(input_video)

#获取视频的帧率和帧大小
fps = int(cap.get(cv2.CAP_PROP_FPS))
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

#计算新的帧大小(540p)
new_height = 540
new_width = int((new_height / frame_height) * frame_width)

#创建视频写入对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_video, fourcc, fps, (new_width, new_height),isColor=False)
#在循环中不停读取每一帧做处理
while True:
    ret, frame = cap.read()
    if not ret:
        break

    #调整帧率大小
    frame = cv2.resize(frame, (new_width, new_height))
    #转换为灰度图像
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    #垂直翻转画面
    frame = cv2.flip(frame, 1)
    #添加高斯噪声
    frame = add_gaussion_noise(frame)
    #写出输出视频
    out.write(frame)

#释放资源并关闭窗口
cap.release()
out.release()
cv2.destroyAllWindows()

在这里插入图片描述
生成的文件检测后是没问题的


http://www.kler.cn/a/298636.html

相关文章:

  • 我的nvim的init.lua配置
  • 卸载wps后word图标没有变成白纸恢复
  • python学习笔记—13—while和for循环
  • 小程序组件 —— 28 组件案例 - 推荐商品区域 - 实现结构样式
  • OpenKit 介绍
  • 《C++11》各种初始化方式的详细列举与对比
  • AI学习者的Python快速入门指南
  • 【Hot100】LeetCode—55. 跳跃游戏
  • 《零散知识点 · Kafka 知识拓展》
  • linux下framebuffer相关函数及知识点详解及整合运用
  • 【复盘】近期博客内容升级
  • http://localhost:15672/ 无法访问
  • pointpillar部署-TensorRT实现(二)
  • STM32 之 SDRAM 详解
  • jmeter之ForEach控制器使用
  • 【鸿蒙】HarmonyOS NEXT星河入门到实战3-ArkTS界面起步开发
  • 微信小程序:navigateTo跳转无效
  • ICP备案办理的流程中股东附件不显示如何解决
  • uniapp解决页面跳转时,含有base64的数据丢失问题
  • 设计模式 21 策略模式
  • Android 存储之 SharedPreferences 框架体系编码模板
  • 如何在 PyCharm 中导入上级目录(或称为父目录)的模块或包
  • 停车场小程序如何实现分账功能?
  • Unity 摄像机(Camera)详解
  • 牛客小白月赛100(下)
  • 计算机知识科普问答--6 (26-30)