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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM