创建的文件大小与matlab imwrite和cv2 imwrite不同

2024-09-27 17:43:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将一个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文件的开销是多少。谢谢


Tags: 文件pyalphapngischannelrgbfile
1条回答
网友
1楼 · 发布于 2024-09-27 17:43:42

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

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

相关问题 更多 >

    热门问题