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,前者打包之后有坑,后者数据读的都是错的!