2017-02-12 82 views
0

我想使用Python Pillow庫以jp2(「JPEG 2000」)格式保存16位灰度級數組。如何在Windows上安裝OpenJPEG並將其與Pillow一起使用?

我試圖在我的Windows機器上安裝所需的庫OpenJPEG時碰到了一堵磚牆。 documentation不是很清楚......但我認爲我需要下載Win64二進制文件,並將它們放在我的路徑上(我所做過的)。

完成後,在Windows上的Anaconda 4.3.0中使用Pillow 4.0.0時,仍然出現以下錯誤。

IOError: encoder jpeg2k not available 

任何人在那裏成功地使用枕頭來寫和讀JPEG 2000文件,我一定會感激一些技巧。

編輯:

這裏是一個失敗的代碼:

import PIL 
import numpy as np 

arr = np.ones(dtype=np.uint16, shape=(100, 100)) 
im = PIL.Image.fromarray(arr) 
im.save('arr.jp2') 
+0

請提供您的代碼,失敗。錯誤消息說「解碼器」。你想打開文件嗎?如果是,那麼請提供一個示例文件,以便任何人都可以對其進行測試。 –

+0

對不起,我是從記憶中輸入的。這不是「解碼器」錯誤;它是「編碼器」。此外,我已經包括了代碼片斷,失敗。枕頭文件表明我需要安裝OpenJpeg ......這就是我遇到的困難。 –

+0

對我來說,它在im =上失敗,出現錯誤「無法處理這個數據類型」。你有什麼枕頭版本(輸出形式conda列表)? –

回答

0

蟒蛇構建Python using不同版本的Microsoft Visual Studio工具。

這些工具的每個版本都有自己的運行時,這與不兼容與其他版本。

枕頭庫使用編譯的共享庫。 您將需要編譯OpenJPEG 正好是用於構建Python和Pillow的ms visual studio工具的相同版本。

+0

那麼你是否也編譯OpenJpeg? –

+0

@KeithL我不使用ms-windows。 –

0

我剛剛安裝了枕頭,安裝程序從here。我選擇了Pillow-4.0.0.win-amd64-py3.5.exe。在安裝過程中,它找到了conda的python並正確選擇了安裝位置(它安裝在根環境中)。

代碼來測試它的工作原理:

from PIL import Image 
import numpy as np 
arr = np.ones(dtype=np.uint16, shape=(100,100)) 
im = Image.fromarray(arr) 
im.save('test.jp2') 

。注意,保存的文件有8 BPP。

+0

那麼最終它保存爲8位? Ughh。我正在做的這一點是保存爲16位。 :(真讓人沮喪,謝謝。 –

相關問題