You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cv2.VideoWriter生成条纹、拉伸变形异常视频问题求助

问题修复方案

你遇到的条纹、拉伸、黑条异常由以下原因导致,对应修复方法如下:

核心原因

OpenCV的cv2.VideoWriter参数规则和图像numpy数组的shape规则不匹配,加上硬编码输出尺寸,最终导致帧数据解析错位:

  • cv2.VideoWriter的尺寸参数要求格式为(宽度, 高度)
  • 存储的图像是numpy数组,shape顺序为(高度, 宽度),两者顺序完全相反
  • 硬编码的(160,122)大概率和实际输入帧的尺寸不匹配,VideoWriter不会自动适配帧尺寸,会强制按写入的尺寸解析原始像素数据,就会出现条纹、错位问题

修复后代码

def saveVideo(self):
    import cv2
    # 空列表直接返回避免报错
    if len(self.images) == 0:
        return
    # 取第一帧获取实际宽高,不要硬编码
    frame_h, frame_w = self.images[0].shape[:2]
    # 尺寸参数传入顺序是(宽度, 高度)即(frame_w, frame_h)
    out = cv2.VideoWriter("output.mp4", cv2.VideoWriter_fourcc(*'mp4v'), self.fps, (frame_w, frame_h), 0)
    for img in self.images:
        # 可选:保证所有帧尺寸统一,避免个别帧尺寸不一致导致异常
        write_frame = cv2.resize(img, (frame_w, frame_h))
        out.write(write_frame)
    out.release()

其他可选排查点

  • 确认所有输入帧的像素类型为uint8,如果你的像素是0~1范围的浮点型数值,需要先乘255再转uint8再写入
  • 部分环境下mp4v编码器要求宽高为2的倍数,如果你的实际帧宽/高为奇数,可以先给边缘补1像素黑边再写入

内容的提问来源于stack exchange,提问作者Raquel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:45:03