[英]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.