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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值