python - Python Opencv MJPG压缩?

标签 python opencv

处理视频后,我得到的文件大得多。是MJPG fourcc编解码器正确压缩还是应该发生?原始视频大小为2.51 mb,结果视频文件大小为16.8 mb。在此代码中,没有要引用的已处理图像,它使用的图像与以前相同,但是尺寸增加了。

这是我的代码。

import os
import cv2

width=960
height=540
fps=25.0

#video=cv2.VideoWriter('ntest\\video.avi',-1,1,(width,height))
fourcc=cv2.VideoWriter_fourcc(*'MJPG')
video = cv2.VideoWriter('ntest\\output.avi',fourcc, fps, (width,height))

cap = cv2.VideoCapture('in.mp4')
count = 0

prename="ntest\\frame"
extension=".jpg"

while cap.isOpened():
    ret,frame = cap.read()
    #after processing, replace frame with processed image
    cv2.imshow('window-name',frame)
    name=prename+str(count)+extension
    cv2.imwrite(name, frame)
    a=cv2.imread(name)
    video.write(a)
    os.remove(name) #deletes image file, only keeps video
    count = count + 1
    if cv2.waitKey(10) & 0xFF == ord('q'):
        break

cap.release()
cap.destroyAllWindows()
cv2.destroyAllWindows()
video.release()

最佳答案

如果输入的mp4文件使用了像h264这样的现代编解码器,则mjpeg很可能会更大。 Mjpeg只是每个帧的一系列jpeg图像,它不能利用图像的各个区域之间相同的区域,也不能利用现代视频编解码器使用的任何预测编码

关于python - Python Opencv MJPG压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46439152/

相关文章:

python - Python 2 Decimal 的 Sin、cos 等?

c++ - main.cpp :-1: error: undefined reference to `cvLoadImage'

c++ - 无法在函数内部为 cv::Mat 赋值

python - 如何在Python中将Excel列转换为以逗号分隔的列表

python - 在 pandas 中分割时间戳日期

python - 无法在 Python 上下载 PyQt5

python - 使用angular上传文件时Flask访问请求数据

c# - OpenCVsharp:实时流式传输

python - 使用 python 和 OpenCV 在图像中写入文本

python-3.x - 特征匹配+单应性