Usage example (libtiff wrapper)
from libtiff import TIFF # to open a tiff file for reading: tif = TIFF.open('filename.tif', mode='r') # to read an image in the currect TIFF directory and return it as numpy array: image = tif.read_image() # to read all images in a TIFF file: for image in tif.iter_images(): # do stuff with image # to open a tiff file for writing: tif = TIFF.open('filename.tif', mode='w') # to write a image to tiff file tif.write_image(image)
Usage example (pure Python module)
from libtiff import TIFFfile, TIFFimage # to open a tiff file for reading tif = TIFFfile('filename.tif') # to return memmaps of images and sample names (eg channel names, SamplesPerPixel>=1) samples, sample_names = tiff.get_samples() # to create a tiff structure from image data tiff = TIFFimage(data, description='') # to write tiff structure to file tiff.write_file('filename.tif', compression='none') # or 'lzw' del tiff # flushes data to disk
from libtiff import TIFF from scipy import misc ##tiff文件解析成图像序列 ##tiff_image_name: tiff文件名; ##out_folder:保存图像序列的文件夹 ##out_type:保存图像的类型,如.jpg、.png、.bmp等 def tiff_to_image_array(tiff_image_name, out_folder, out_type): tif = TIFF.open(tiff_image_name, mode = "r") idx = 0 for im in list(tif.iter_images()): # im_name = out_folder + str(idx) + out_type misc.imsave(im_name, im) print im_name, 'successfully saved!!!' idx = idx + 1 return ##图像序列保存成tiff文件 ##image_dir:图像序列所在文件夹 ##file_name:要保存的tiff文件名 ##image_type:图像序列的类型 ##image_num:要保存的图像数目 def image_array_to_tiff(image_dir, file_name, image_type, image_num): out_tiff = TIFF.open(file_name, mode = 'w') #这里假定图像名按序号排列 for i in range(0, image_num): image_name = image_dir + str(i) + image_type image_array = Image.open(image_name) #缩放成统一尺寸 img = image_array.resize((480, 480), Image.ANTIALIAS) out_tiff.write_image(img, compression = None, write_rgb = True) out_tiff.close() return
用opencv读取
import cv2 cv2.imread("filename",flags)
对于cv2,imread的关于通道数和位深的flags有四种选择: IMREAD_UNCHANGED = -1#不进行转化,比如保存为了16位的图片,读取出来仍然为16位。 IMREAD_GRAYSCALE = 0#进行转化为灰度图,比如保存为了16位的图片,读取出来为8位,类型为CV_8UC1。 IMREAD_COLOR = 1#进行转化为RGB三通道图像,图像深度转为8位 IMREAD_ANYDEPTH = 2#保持图像深度不变,进行转化为灰度图。 IMREAD_ANYCOLOR = 4#若图像通道数小于等于3,则保持原通道数不变;若通道数大于3则只取取前三个通道。图像深度转为8位 对于多通道TIFF图像,若要保证图像数据的正常读取,显然要选择IMREAD_UNCHANGED作为imread的flags设置值。
安装pylibtiff
##PIL使用
导入 Image 模块。然后通过 Image 类中的 open 方法即可载入一个图像文件。如果载入文件失败,则会引起一个 IOError ;若无返回错误,则 open 函数返回一个 Image 对象。现在,我们可以通过一些对象属性来检查文件内容,即:
> import Image > im = Image.open("j.jpg") > print im.format, im.size, im.mode JPEG (440, 330) RGB
Image 类的实例有 5 个属性,分别是:
format: 以 string 返回图片档案的格式(JPG, PNG, BMP, None, etc.);如果不是从打开文件得到的实例,则返回 None。
mode: 以 string 返回图片的模式(RGB, CMYK, etc.);完整的列表参见 官方说明·图片模式列表
size: 以二元 tuple 返回图片档案的尺寸 (width, height)
palette: 仅当 mode 为 P 时有效,返回 ImagePalette 示例
info: 以字典形式返回示例的信息
函数概貌。
Reading and Writing Images : open( infilename ) , save( outfilename ) Cutting and Pasting and Merging Images :
crop() : 从图像中提取出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left, upper, right, lower),坐标
系统的原点(0, 0)是左上角。
paste() :
merge() :
> box = (100, 100, 200, 200) > region = im.crop(box) > region.show() > region = region.transpose(Image.ROTATE_180) > region.show() > im.paste(region, box) > im.show()
旋转一幅图片:
def roll(image, delta): "Roll an image sideways" xsize, ysize = image.size delta = delta % xsize if delta == 0: return image part1 = image.crop((0, 0, delta, ysize)) part2 = image.crop((delta, 0, xsize, ysize)) image.paste(part2, (0, 0, xsize-delta, ysize)) image.paste(part1, (xsize-delta, 0, xsize, ysize)) return image
几何变换
>out = im.resize((128, 128)) # >out = im.rotate(45) #逆时针旋转 45 度角。 >out = im.transpose(Image.FLIP_LEFT_RIGHT) #左右对换。 >out = im.transpose(Image.FLIP_TOP_BOTTOM) #上下对换。 >out = im.transpose(Image.ROTATE_90) #旋转 90 度角。 >out = im.transpose(Image.ROTATE_180) #旋转 180 度角。 >out = im.transpose(Image.ROTATE_270) #旋转 270 度角。
Image 类的 thumbnail() 方法可以用来制作缩略图。它接受一个二元数组作为缩略图的尺寸,然后将示例缩小到指定尺寸。
import os, sys from PIL import Image for infile in sys.argv[1:]: outfile = os.path.splitext(infile)[0] + ".thumbnail" if infile != outfile: try: im = Image.open(infile) x, y = im.size im.thumbnail((x//2, y//2)) im.save(outfile, "JPEG") except IOError: print "cannot create thumbnail for", infile
这里我们用 im.size 获取原图档的尺寸,然后以 thumbnail() 制作缩略图,大小则是原先图档的四分之一。同样,如果图档无法打开,则在终端上打印无法执行的提示。
PIL.Image.fromarray(obj, mode=None)
Creates an image memory from an object exporting the array interface (using the buffer protocol). If obj is not contiguous, then the tobytes method is called and frombuffer() is used. Parameters: obj – Object with array interface mode – Mode to use (will be determined from type if None) See: Modes. Returns: An image object. New in version 1.1.6.
PIL文档
以上这篇Python模块_PyLibTiff读取tif文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]