zoukankan      html  css  js  c++  java
  • python_opencv修改视频分辨率

    在测试alphapose时,原始视频的分辨率过高,导致网络难以运行,所以要修改视频的分辨率,代码如下:

    import cv2
    cap = cv2.VideoCapture("videl_1.mp4")
    videowriter = cv2.VideoWriter("videl_640_360"+".avi", cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 15, (640,360))
    
    success, _ = cap.read()
    
    while success:
        success, img1 = cap.read()
        try:
             img = cv2.resize(img1, (640, 360), interpolation=cv2.INTER_LINEAR)
             videowriter.write(img)
        except:
             break

    cv2.VideoWriter()

      VideoWriter(filename, fourcc, fps, frameSize[, isColor])

      第一个参数是要保存的文件的路径
      fourcc 指定编码器,一般有“DIVX"、”MJPG"、“XVID”、“X264",根据你的电脑环境安装了哪些编码器。
      fps 要保存的视频的帧率
      frameSize 要保存的文件的画面尺寸
      isColor 指示是黑白画面还是彩色的画面
      需要注意的是在 VideoWriter 中的尺寸要和 write() 中写进去的一样,也就是resize()函数的尺寸大小,不然视频会存储失败。

      cv2.resize()
      cv2.resize(src, size, interpolation) ->dst

      src - 原图

      size-resize后图片的大小,理论上可以随意设置。

      interpolation - 插值方法。共有5种:

      INTER_NEAREST - 最近邻插值法

      INTER_LINEAR - 双线性插值法(默认)

      INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。

      INTER_CUBIC - 基于4x4像素邻域的3次插值法

      INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值

      通常的,缩小使用cv.INTER_AREA,放缩使用cv.INTER_CUBIC(较慢)和cv.INTER_LINEAR(较快效果也不错)。默认情况下,所有的放缩都使用cv.INTER_LINEAR。

      dst - 目标图像。

      这里本来可以不使用异常处理的,但是因为在处理每一个视频的最后一帧的时候都会报一个这样的错误:

    参考博客:https://blog.csdn.net/qq_37431083/article/details/101099017

  • 相关阅读:
    多维数组和元组
    字符串
    列表
    JQuery事件的绑定
    JQuery设置缓慢下拉大行多次执行的解决办法,以及stop()函数的简单理解
    JQuery_AJAX简单笔记
    C#后台验证身份证号码的一个方法
    JQuery AJAX请求aspx后台方法
    网络编辑器插件ckeditor+ckfinder配置
    请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
  • 原文地址:https://www.cnblogs.com/liuwenhua/p/12744997.html
Copyright © 2011-2022 走看看