gpt4 book ai didi

image-processing - Python 和 ffmpeg 创建不同的 tiff 堆栈

转载 作者:行者123 更新时间:2023-12-04 22:52:57 27 4
gpt4 key购买 nike

大家好,对图像处理感兴趣的人,
使用 ffmpeg 无需编程即可从灰度电影中创建多页 tiff 文件(tiff 堆栈)。和 tiffcp (后者是 Debian 的 libtiff-tools 的一部分):

ffmpeg -i movie.avi frame%03d.tif
tiffcp frame*.tif stack.tif
使用 OpenCV 和 tifffile 库在 Python 中编程对我来说似乎也是可行的:
import numpy as np
import cv2
import tifffile

cap = cv2.VideoCapture('movie.avi')

success, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

image = np.zeros((300, 400, 500), 'uint8') # pre-allocate some space
i = 0;

while success:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
image[i,:,:] = gray[80:480,0:500]
success, frame = cap.read()

cap.release()
tifffile.imsave('image.tif',image,photometric='minisblack')
但是,结果大小不同。查看 Python 解决方案的直方图,我意识到它与 ffmpeg 不同。解决方案。
感谢下面的答案,我将输出文件与 file 进行了比较。 :
user@ubuntu:~$ file ffmpeg.tif tifffile.tif 
ffmpeg.tif: TIFF image data, little-endian
tifffile.tif: TIFF image data, little-endian, direntries=17, height=400, bps=8, compression=none, PhotometricIntepretation=BlackIsZero, description={"shape": [300, 400, 500]}, width=500
此外,我将文件与 ffmpeg 进行了比较。 :
user@ubuntu:~$ ffmpeg -i ffmpeg.tif -i tifffile.tif 
[tiff_pipe @ 0x556cfec95d80] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, tiff_pipe, from 'ffmpeg.tif':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: tiff, gray, 500x400 [SAR 1:1 DAR 5:4], 25 tbr, 25 tbn, 25 tbc
[tiff_pipe @ 0x556cfeca6b40] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #1, tiff_pipe, from 'tifffile.tif':
Duration: N/A, bitrate: N/A
Stream #1:0: Video: tiff, gray, 500x400 [SAR 1:1 DAR 5:4], 25 tbr, 25 tbn, 25 tbc
我可以使用哪些附加诊断来确定问题?

最佳答案

压缩算法
默认 ffmpeg对 TIFF 输出使用 packbits 压缩算法。这可以通过 -compression_algo 进行更改。选项,其他可接受的值为 raw、lzw 和 deflate:

ffmpeg -i input.avi -compression_algo lzw output_%04d.tif
像素格式
另一个差异可能是由像素格式(色彩空间和色度二次采样)引起的。见 ffmpeg -h encoder=tiff获取支持的像素格式列表。
使用哪种像素格式取决于您的输入,日志/控制台输出将指示所选像素格式。
比较输出
我不知道 tifffile 使用什么默认值,但你可以运行 ffmpeg -i ffmpeg.tif -i tifffile.tiffile ffmpeg.tif tifffile.tif查看可能解释差异的详细信息。

关于image-processing - Python 和 ffmpeg 创建不同的 tiff 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63105088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com