簡體   English   中英

無法在PIL中的16位TIF上應用圖像濾波器

[英]Can't apply image filters on 16-bit TIFs in PIL

我嘗試使用python的PIL應用圖像過濾器。 代碼很簡單:

im = Image.open(fnImage)
im = im.filter(ImageFilter.BLUR)

此代碼在PNG,JPG和8位TIF上按預期工作。 但是,當我嘗試在16位TIF上應用此代碼時,我收到以下錯誤

ValueError: image has wrong mode

請注意,PIL能夠在沒有抱怨的情況下加載,調整大小並保存16位TIF,因此我假設此問題與過濾器相關。 但是, ImageFilter文檔沒有提到16位支持

有什么辦法可以解決嗎?

您的TIFF圖像模式很可能是“I; 16”。 在當前版本的ImageFilter中,內核只能應用於“L”和“RGB”圖像(參見ImageFilter.py的源代碼)

嘗試先轉換為另一種模式:

im.convert('L')

如果失敗,請嘗試:

im.mode = 'I'
im = im.point(lambda i:i*(1./256)).convert('L').filter(ImageFilter.BLUR)

備注: Python和16 Bit Tiff可能重復

要繼續前進,請嘗試使用ImageMagick ,查找程序的PythonMagick掛鈎。 在命令提示符下,您可以使用convert.exe image-16.tiff -blur 2x2 output.tiff 沒有設法在我的Windows操作系統中安裝PythonMagick,因為源需要編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM