中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python模塊_PyLibTiff讀取tif文件的實例

發布時間:2020-09-17 16:03:18 來源:腳本之家 閱讀:259 作者:ninesun11 欄目:開發技術

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文件的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泾川县| 邹城市| 思南县| 同仁县| 淄博市| 商都县| 鹿泉市| 嘉黎县| 仙游县| 原平市| 文昌市| 乐清市| 望都县| 宿州市| 大渡口区| 平顺县| 揭东县| 汉沽区| 黄梅县| 梁河县| 南投市| 左权县| 额尔古纳市| 垫江县| 砚山县| 隆子县| 金沙县| 台江县| 青神县| 沂源县| 伊金霍洛旗| 曲阳县| 南川市| 怀宁县| 和田市| 德阳市| 通化县| 宁阳县| 库尔勒市| 炎陵县| 门头沟区|