Opencv:为什么我在不做任何更改的情况下读取和写入图像时文件大小会发生变化?
Opencv: Why does the file size change when I read and write an image without making any changes?
我有一个 (.TIFF) 文件列表,我正在重命名这些文件并以相同的格式保存。
我正在使用 cv2 模块来执行此操作。
import cv2
import os
import glob
os.chdir('C:/99_Temp/')
for file in glob.glob("*.tiff"):
f = os.path.splitext(file)
time_val = f[0][:2]
a1 = cv2.imread(file)
cv2.imwrite(time_val+'.tiff',a1)
为什么原始 TIFF 文件的文件大小变小了?我没有做任何处理,从视觉上看图像看起来是一样的。但我想知道,为什么不同?
TIFF 文件大小变化的原因可能有多种解释。这里有一些:
一个文件可能是 RGB,每个像素有 3 个字节的红色、绿色和蓝色,而另一个编码器可能会看到该文件的颜色少于 256 种,并决定写入单个字节的调色板索引每个像素(并将 256 种颜色存储在单独的调色板中)而不是 3 个字节的 RGB。
一个文件可能是8位,另一个可能是1位(双级)、16位、32位或64位。
文件可能有不同的压缩方式 - 从 none 到 LZW、RLE 或最近的 JPEG。
一个编码员可能已经编写了 IPTC 或其他元数据,而另一个编码员将其丢弃。
一个编码器可能包含了低分辨率预览,另一个则没有。
为了检查,您可以使用 exiftool
,它 只是 一个 Perl 脚本,安装简单且体积小:
exiftool image.tif
示例输出
ExifTool Version Number : 11.11
File Name : image.tif
Directory : .
File Size : 91 kB
File Modification Date/Time : 2018:11:28 09:38:03+00:00
File Access Date/Time : 2018:12:05 13:15:15+00:00
File Inode Change Date/Time : 2018:12:05 13:15:10+00:00
File Permissions : rw-r--r--
File Type : TIFF
File Type Extension : tif
MIME Type : image/tiff
Exif Byte Order : Little-endian (Intel, II)
Image Width : 784
Image Height : 1466
Bits Per Sample : 8
Compression : LZW
Photometric Interpretation : BlackIsZero
Strip Offsets : (Binary data 827 bytes, use -b option to extract)
Samples Per Pixel : 1
Rows Per Strip : 10
Strip Byte Counts : (Binary data 642 bytes, use -b option to extract)
Planar Configuration : Chunky
Predictor : Horizontal differencing
Image Size : 784x1466
Megapixels : 1.1
或 tiffinfo
随 libtiff
一起提供,也非常小巧且易于安装:
tiffinfo image.tif
示例输出
TIFF Directory at offset 0x16894 (92308)
Image Width: 784 Image Length: 1466
Bits/Sample: 8
Compression Scheme: LZW
Photometric Interpretation: min-is-black
Samples/Pixel: 1
Rows/Strip: 10
Planar Configuration: single image plane
Predictor: horizontal differencing 2 (0x2)
或 ImageMagick 安装在大多数 Linux 发行版上,可用于 macOS 和 Windows - 但安装量很大:
magick identify -verbose image.tif
示例输出
Image: image.tif
Format: TIFF (Tagged Image File Format)
Mime type: image/tiff
Class: DirectClass
Geometry: 784x1466+0+0
Units: PixelsPerInch
Colorspace: Gray
Type: Grayscale
Endianess: LSB
Depth: 8-bit
Channel depth:
Gray: 8-bit
Channel statistics:
Pixels: 1149344
Gray:
...
...
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 784x1466+0+0
Dispose: Undefined
Iterations: 0
Compression: LZW
Orientation: TopLeft
Properties:
date:create: 2018-12-05T13:15:10+00:00
date:modify: 2018-11-28T09:38:03+00:00
signature: 5f9afdc8efd4757daa7f6bdba105f6ae149833c1c8103dd544f0073bb302069d
tiff:alpha: unspecified
tiff:endian: lsb
tiff:photometric: min-is-black
tiff:rows-per-strip: 10
Artifacts:
verbose: true
Tainted: False
Filesize: 93622B
Number pixels: 1.14934M
Pixels per second: 114.935MP
User time: 0.010u
Elapsed time: 0:01.009
Version: ImageMagick 7.0.8-14 Q16 x86_64 2018-11-16 https://imagemagick.org
我有一个 (.TIFF) 文件列表,我正在重命名这些文件并以相同的格式保存。 我正在使用 cv2 模块来执行此操作。
import cv2
import os
import glob
os.chdir('C:/99_Temp/')
for file in glob.glob("*.tiff"):
f = os.path.splitext(file)
time_val = f[0][:2]
a1 = cv2.imread(file)
cv2.imwrite(time_val+'.tiff',a1)
为什么原始 TIFF 文件的文件大小变小了?我没有做任何处理,从视觉上看图像看起来是一样的。但我想知道,为什么不同?
TIFF 文件大小变化的原因可能有多种解释。这里有一些:
一个文件可能是 RGB,每个像素有 3 个字节的红色、绿色和蓝色,而另一个编码器可能会看到该文件的颜色少于 256 种,并决定写入单个字节的调色板索引每个像素(并将 256 种颜色存储在单独的调色板中)而不是 3 个字节的 RGB。
一个文件可能是8位,另一个可能是1位(双级)、16位、32位或64位。
文件可能有不同的压缩方式 - 从 none 到 LZW、RLE 或最近的 JPEG。
一个编码员可能已经编写了 IPTC 或其他元数据,而另一个编码员将其丢弃。
一个编码器可能包含了低分辨率预览,另一个则没有。
为了检查,您可以使用 exiftool
,它 只是 一个 Perl 脚本,安装简单且体积小:
exiftool image.tif
示例输出
ExifTool Version Number : 11.11
File Name : image.tif
Directory : .
File Size : 91 kB
File Modification Date/Time : 2018:11:28 09:38:03+00:00
File Access Date/Time : 2018:12:05 13:15:15+00:00
File Inode Change Date/Time : 2018:12:05 13:15:10+00:00
File Permissions : rw-r--r--
File Type : TIFF
File Type Extension : tif
MIME Type : image/tiff
Exif Byte Order : Little-endian (Intel, II)
Image Width : 784
Image Height : 1466
Bits Per Sample : 8
Compression : LZW
Photometric Interpretation : BlackIsZero
Strip Offsets : (Binary data 827 bytes, use -b option to extract)
Samples Per Pixel : 1
Rows Per Strip : 10
Strip Byte Counts : (Binary data 642 bytes, use -b option to extract)
Planar Configuration : Chunky
Predictor : Horizontal differencing
Image Size : 784x1466
Megapixels : 1.1
或 tiffinfo
随 libtiff
一起提供,也非常小巧且易于安装:
tiffinfo image.tif
示例输出
TIFF Directory at offset 0x16894 (92308)
Image Width: 784 Image Length: 1466
Bits/Sample: 8
Compression Scheme: LZW
Photometric Interpretation: min-is-black
Samples/Pixel: 1
Rows/Strip: 10
Planar Configuration: single image plane
Predictor: horizontal differencing 2 (0x2)
或 ImageMagick 安装在大多数 Linux 发行版上,可用于 macOS 和 Windows - 但安装量很大:
magick identify -verbose image.tif
示例输出
Image: image.tif
Format: TIFF (Tagged Image File Format)
Mime type: image/tiff
Class: DirectClass
Geometry: 784x1466+0+0
Units: PixelsPerInch
Colorspace: Gray
Type: Grayscale
Endianess: LSB
Depth: 8-bit
Channel depth:
Gray: 8-bit
Channel statistics:
Pixels: 1149344
Gray:
...
...
Matte color: grey74
Background color: white
Border color: srgb(223,223,223)
Transparent color: none
Interlace: None
Intensity: Undefined
Compose: Over
Page geometry: 784x1466+0+0
Dispose: Undefined
Iterations: 0
Compression: LZW
Orientation: TopLeft
Properties:
date:create: 2018-12-05T13:15:10+00:00
date:modify: 2018-11-28T09:38:03+00:00
signature: 5f9afdc8efd4757daa7f6bdba105f6ae149833c1c8103dd544f0073bb302069d
tiff:alpha: unspecified
tiff:endian: lsb
tiff:photometric: min-is-black
tiff:rows-per-strip: 10
Artifacts:
verbose: true
Tainted: False
Filesize: 93622B
Number pixels: 1.14934M
Pixels per second: 114.935MP
User time: 0.010u
Elapsed time: 0:01.009
Version: ImageMagick 7.0.8-14 Q16 x86_64 2018-11-16 https://imagemagick.org