Python模块_PyLibTiff读取tif文件的实例
Usageexample(libtiffwrapper)
fromlibtiffimportTIFF #toopenatifffileforreading: tif=TIFF.open('filename.tif',mode='r') #toreadanimageinthecurrectTIFFdirectoryandreturnitasnumpyarray: image=tif.read_image() #toreadallimagesinaTIFFfile: forimageintif.iter_images():#dostuffwithimage #toopenatifffileforwriting: tif=TIFF.open('filename.tif',mode='w') #towriteaimagetotifffile tif.write_image(image)
Usageexample(purePythonmodule)
fromlibtiffimportTIFFfile,TIFFimage #toopenatifffileforreading tif=TIFFfile('filename.tif') #toreturnmemmapsofimagesandsamplenames(egchannelnames,SamplesPerPixel>=1) samples,sample_names=tiff.get_samples() #tocreateatiffstructurefromimagedata tiff=TIFFimage(data,description='') #towritetiffstructuretofile tiff.write_file('filename.tif',compression='none')#or'lzw' deltiff#flushesdatatodisk
fromlibtiffimportTIFF fromscipyimportmisc ##tiff文件解析成图像序列 ##tiff_image_name:tiff文件名; ##out_folder:保存图像序列的文件夹 ##out_type:保存图像的类型,如.jpg、.png、.bmp等 deftiff_to_image_array(tiff_image_name,out_folder,out_type): tif=TIFF.open(tiff_image_name,mode="r") idx=0 foriminlist(tif.iter_images()): # im_name=out_folder+str(idx)+out_type misc.imsave(im_name,im) printim_name,'successfullysaved!!!' idx=idx+1 return ##图像序列保存成tiff文件 ##image_dir:图像序列所在文件夹 ##file_name:要保存的tiff文件名 ##image_type:图像序列的类型 ##image_num:要保存的图像数目 defimage_array_to_tiff(image_dir,file_name,image_type,image_num): out_tiff=TIFF.open(file_name,mode='w') #这里假定图像名按序号排列 foriinrange(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读取
importcv2 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对象。现在,我们可以通过一些对象属性来检查文件内容,即:
>>>importImage >>>im=Image.open("j.jpg") >>>printim.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:以字典形式返回示例的信息
函数概貌。
ReadingandWritingImages:open(infilename),save(outfilename)CuttingandPastingandMergingImages:
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()
旋转一幅图片:
defroll(image,delta): "Rollanimagesideways" xsize,ysize=image.size delta=delta%xsize ifdelta==0:returnimage 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)) returnimage
几何变换
>>>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()方法可以用来制作缩略图。它接受一个二元数组作为缩略图的尺寸,然后将示例缩小到指定尺寸。
importos,sys fromPILimportImage forinfileinsys.argv[1:]: outfile=os.path.splitext(infile)[0]+".thumbnail" ifinfile!=outfile: try: im=Image.open(infile) x,y=im.size im.thumbnail((x//2,y//2)) im.save(outfile,"JPEG") exceptIOError: print"cannotcreatethumbnailfor",infile
这里我们用im.size获取原图档的尺寸,然后以thumbnail()制作缩略图,大小则是原先图档的四分之一。同样,如果图档无法打开,则在终端上打印无法执行的提示。
PIL.Image.fromarray(obj,mode=None)
Createsanimagememoryfromanobjectexportingthearrayinterface(usingthebufferprotocol). Ifobjisnotcontiguous,thenthetobytesmethodiscalledandfrombuffer()isused. Parameters: obj–Objectwitharrayinterface mode–Modetouse(willbedeterminedfromtypeifNone)See:Modes. Returns: Animageobject. Newinversion1.1.6.
PIL文档
以上这篇Python模块_PyLibTiff读取tif文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。