【问题标题】:created file sizes are different with matlab imwrite and cv2 imwrite创建的文件大小与 matlab imwrite 和 cv2 imwrite 不同
【发布时间】:2020-10-18 23:10:03
【问题描述】:

我正在将 matlab 脚本转换为 py 文件。最少的 Matlab 代码:

% PNG file is 32 bit. G is RGB and discardIMG is alpha channel
[G, map, discardIMG] = imread('file.png');
discardIMG = double(discardIMG);
discard = mod(floor(discardIMG / 2^(i - 1)), 2);
imwrite(uint8(255 * discard), 'file.png';

我输入的 py 等效项:

% imread with -1 reads all 4 channels. Without it only RGB is read.
G = cv2.imread('file.png', -1)
% alpha channel as discard image
discardIMG = G[:,:,3].astype(float)
discard = np.floor( (discardIMG / 2**(i - 1))% 2)   
cv2.imwrite('file2.png', (255*discard).astype(np.uint8))

问题是 matlab 文件比 py 文件小。对于8个文件的数量;

py saved file size = [21,21,30,21,21,21,21,21]

mat saved file size = [17,17,24,17,17,17,17,17]

我还检查了最终丢弃文件,它们的内容和大小看起来确实相同。有任何想法吗? py 文件的开销是多少。谢谢。

【问题讨论】:

    标签: python matlab opencv


    【解决方案1】:

    如果你从here看cv2.imwrite的官方文档 这是因为压缩参数。对于 png 图像,默认参数是 3。值越高,意味着尺寸越小,压缩时间越长,反之亦然。因此,您可以提供另一个参数,如下所示,对于 png 图像,它可以是 0 到 9 之间的任何值。

    cv2.imwrite('file2.png', (255*discard).astype(np.uint8), [cv2.IMWRITE_PNG_COMPRESSION, 9])
    

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2020-02-27
      • 1970-01-01
      • 2020-08-16
      • 2018-11-13
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多