2016-02-12 58 views
0

我有一組保存在一個文件夾中的RGBA圖像,我的目標是將這些圖像轉換爲另一個pgm格式的文件夾,驗證碼:轉換文件夾中的RGBA圖像並將其保存到'.pgm'格式的另一個文件夾

path1 = file/path/where/image/are/stored 
path2 = file/path/where/pgm/images/will/be/saved 

list = os.listdir(path1) 
for file in listing: 
    #Transforms an RGBA with channel into an RGB only 
    image_rgb = Image.open(file).convert('RGB') 

    #Color separation stains to detect microscopic cells 
    ihc_hed = rgb2hed(image_rgb) 

    #Trasnforms the image into a numpy array of the UINT8 Type 
    cv_img = ihc_hed.astype(np.uint8) 

    # create color boundaries boundaries detecting black and blue stains 
    lower = np.array([0,0,0], dtype = "uint8") 
    upper = np.array([0,0,255], dtype = "uint8") 
    #calculates the pixel within the specified boundaries and create a mask 
    mask = cv2.inRange(cv_img, lower, upper) 
    img = Image.fromarray(mask,'L') 
    img.save(path2+file,'pgm') 

但是我得到一個錯誤,說明KeyError異常:「PGM」,似乎「PGM」形式是不是在模式

謝謝你的建議:)

回答

1

由於就我所見,scikit圖像使用Python Imaging Library插件來保存圖像文件。 PIL不支持PGM。

請參考http://effbot.org/imagingbook/decoder.htm瞭解如何爲PIL編寫自己的文件解碼器。

提取物:

import Image, ImageFile 
import string 

class SpamImageFile(ImageFile.ImageFile): 

    format = "SPAM" 
    format_description = "Spam raster image" 

    def _open(self): 

     # check header 
     header = self.fp.read(128) 
     if header[:4] != "SPAM": 
      raise SyntaxError, "not a SPAM file" 

     header = string.split(header) 

     # size in pixels (width, height) 
     self.size = int(header[1]), int(header[2]) 

     # mode setting 
     bits = int(header[3]) 
     if bits == 1: 
      self.mode = "1" 
     elif bits == 8: 
      self.mode = "L" 
     elif bits == 24: 
      self.mode = "RGB" 
     else: 
      raise SyntaxError, "unknown number of bits" 

     # data descriptor 
     self.tile = [ 
      ("raw", (0, 0) + self.size, 128, (self.mode, 0, 1)) 
     ] 

Image.register_open("SPAM", SpamImageFile) 

Image.register_extension("SPAM", ".spam") 
Image.register_extension("SPAM", ".spa") # dos version 
相關問題