Python模块_PyLibTiff读取tif文件
来源:互联网 发布:电梯运行优化 编辑:程序博客网 时间:2024/05/17 09:14
- 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 cv2cv2.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.modeJPEG (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, sysfrom PIL import Imagefor 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 interfacemode – Mode to use (will be determined from type if None) See: Modes.Returns: An image object.New in version 1.1.6.
PIL文档
阅读全文
0 0
- Python模块_PyLibTiff读取tif文件
- python linecache 模块读取文件
- python读取文件指定行(linecache模块)
- python读取文件指定行(linecache模块)
- python读取excel文件(xrld模块)
- python读取文件指定行(linecache模块)
- MATLAB读取nc文件并转换为.tif格式
- Python读取文件及安装读取Excel模块
- 使用Python 批量转移*.tif和*.mov文件
- python中利用GDAL对tif文件进行读写
- c#读写tif文件,分割tif文件
- 详解python linecache模块读取文件的方法
- Python 读取excle文件所有内容[xlrd模块]
- python模块:xlsxwriter和xlrd相结合读取、写入excel文件
- python之使用xlrd模块读取表格文件
- 详解python linecache模块读取文件的方法
- Python读取文件的一行之linecache模块
- python使用xlrd模块读取xlsx文件中的ip
- lintcode--删除排序链表中的重复数字
- 一篇文章讲透CDN HTTPS安全加速基本概念、解决方案及优化实践
- 16秋计算机JAVA第三节课作业(钟永钜) 4~6题
- Java的Json解析包FastJson使用
- CSS中定义变量,并使用变量设置属性值
- Python模块_PyLibTiff读取tif文件
- Object Detection论文笔记(4)
- 顺序堆栈(数组)
- 从数据库得到数据导出指定格式的xml文件,上传到NC接口,返回回执到本地一个xml文件
- 栈的压入、弹出序列
- Inno Setup入门(五)——添加readme文件
- JAVA_int类型数据精度高于float低于double
- 下面总结 8 组常用的Eclipse快捷键
- Java发送邮件的简单实现