python 读 大tif文件 Failed building wheel for libtiff
Failed building wheel for libtiff
请参考:https://blog.csdn.net/u013381011/article/details/78414203
来源于:
https://github.com/pearu/pylibtiff
tif = TIFF.open('filename.tif', mode='r')
tif = TIFF.open(self.originalVideoPath, mode='r')
# print(type(tif))
tmpOriginalVideo = []
counter = 0
gl.frameNum = 2400#这里我不知道如何从tif中直接获取图片的层数
for image in tif.iter_images(): # do stuff with image
image2 = image
# print('type is '+ type(image2))
tmpOriginalVideo.append(image)
counter = counter + 1
self._signal.emit(counter)
# print("aaa...")
gl.originalVideo = tmpOriginalVideo
gl.workingVideo = gl.originalVideo
frameNum = len(tmpOriginalVideo)
gl.frameNum = frameNum
tmpWhiteVideo = [np.full((512, 512, 3), 0, dtype=np.uint8) for x in range(frameNum)] # 创建的是一个list
gl.latestProcessedVideo = tmpWhiteVideo
gl.startIndex = 0
gl.endIndex = gl.frameNum
gl.cursorLogo = QtGui.QCursor(QtGui.QPixmap("resource/cursor.png"))
self._signal.emit(gl.frameNum)
如何获取tif的层数呢?
读出来的tif图像有问题!!!
读出来的数据全错了!
最小值是3000+
但是用python读出来之后就是2了,!!!
尝试新的解决方案:
整个文件
from skimage import io
import tifffile
img1 = io.imread('demo.tif')
img2 = tifffile.imread('demo.tif')
读文件指针
from PIL import Image
import numpy as np
img3 = Image.open('demo.tif')
img3.seek(100)
frame = np.array(img3)
成功了
elif os.path.isfile(self.originalVideoPath) and filetype.guess(self.originalVideoPath).extension is 'tif':
print('originalVideoPath is' + self.originalVideoPath)
# 获取当前的大tif有多少层?
img1 = io.imread(self.originalVideoPath)
tifSize = img1.shape
frameNum = tifSize[0]
gl.frameNum = frameNum
# tif = TIFF.open(self.originalVideoPath, mode='r')
# print(type(tif))
tmpOriginalVideo = []
gl.frameNum = 2400#这里我不知道如何从tif中直接获取图片的层数
for i in range(frameNum):
image = img1[i,:,:]
tmpOriginalVideo.append(image)
tmpMin = np.min(image)
tmpMax = np.max(image)
if tmpMin < gl.ImageStackMin: gl.ImageStackMin = tmpMin
if tmpMax > gl.ImageStackMax: gl.ImageStackMax = tmpMax
self._signal.emit(i)
gl.originalVideo = tmpOriginalVideo
gl.workingVideo = gl.originalVideo
tmpWhiteVideo = [np.full((512, 512, 3), 0, dtype=np.uint8) for x in range(frameNum)] # 创建的是一个list
gl.latestProcessedVideo = tmpWhiteVideo
gl.startIndex = 0
gl.endIndex = gl.frameNum
gl.cursorLogo = QtGui.QCursor(QtGui.QPixmap("resource/cursor.png"))
self._signal.emit(gl.frameNum)
忠告,千万不要用tiflib读取tif文件,读出来的都是错误的、
使用ski-image库时,你会发现,打包之后的软件,你用不了了
读取大tif文件,千万不要用ski和tiflib,前者打包之后有坑,后者数据读的都是错的!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?