【发布时间】:2017-07-11 15:16:40
【问题描述】:
我正在使用python(scikit-image)和octave生成200张图片如下
Python3
import numpy as np
from skimage.io import imsave
images = [255*np.ones((100,100), dtype=np.uint8), # white
np.zeros((100,100), dtype=np.uint8)] # black
for i in range(200): # save alternating black and white images
imsave('%04d.png'%(i+1), images[i%2])
八度
pkg load image;
im1 = 255*ones(100,100); # white
im2 = zeros(100,100); # black
for i=1:200
name = sprintf('%04d.png', i);
if mod(i,2) == 0
imwrite(im1, name);
else
imwrite(im2, name);
end
end
接下来,我使用 ffmpeg 使用以下命令从这两组图像中生成两个视频(交替的白色和黑色帧)
ffmpeg -r 10 -loglevel quiet \
-i ./%04d.png -c:v libx264 \
-preset ultrafast -crf 0 ./out.mkv
- 这两种代码生成的图像文件大小不同。
- 八度{白色:192 字节,黑色:98 字节}
- Python {白色:120 字节,黑色:90 字节}
- 从这些 octave 和 python 图像生成的视频文件的大小彼此之间存在显着差异。
- 八度{文件大小:60 KB}
- Python {文件大小:116 KB}
为什么我们会有这种明显非常奇怪的行为?
编辑
由于有人建议该行为可能是由于 octave 和 python 使用不同的位深度来存储图像,我将 octave 代码更改为使用 8 位数字
im1 = uint8(255*ones(100,100)); # white
im2 = uint8(zeros(100,100)); # black
现在图像文件大小几乎相同
- 八度{白色:118 字节,黑色:90 字节}
- Python {白色:120 字节,黑色:90 字节}
但是视频文件的问题还是一样,octave: 60K, python: 116K
【问题讨论】:
标签: python matlab ffmpeg octave scikit-image