![](/img/trans.png)
[英]tensorflow.python.framework.errors_impl.InvalidArgumentError: Unknown image file format. One of JPEG, PNG, GIF, BMP required
[英]How do I read an arbitrary image file format (PNG, JPEG, TIFF, BMP) in Python using only the standard library?
我是一位經驗豐富的Python程序員,具有豐富的圖像處理和計算機視覺經驗。 我對PIL
, Pillow
, opencv
, numpy
和scikit-image
等所有標准工具都非常熟悉。
如果我只有標准庫可以使用,如何將圖像讀取為Python數據格式(如嵌套列表,字節數組或類似格式)?
我意識到不同的圖像格式具有不同的規格。 我的問題是,我什至會開始構建一個讀取任何給定格式的函數。
注意 Python 2.6在標准庫中有一個jpeg
模塊,此模塊已被棄用。 我們不討論這一點,因為它不受支持。
如果您要問如何“從頭開始”實現這些格式(由於標准庫不這樣做),那么格式規范就是一個很好的起點。
對於PNG,這是https://www.w3.org/TR/2003/REC-PNG-20031110/ 。 它定義了一個PNG流的組成,包括簽名(八個字節, 8950 4e47 0d0a 1a0a
,將文件標識為PNG圖像)以及許多包含元數據,調色板信息和圖像本身的數據塊。 (如果您確實不想使用現有的庫,但絕對不要過度使用,那肯定是一個需要承擔的重大項目。)
對於BMP,這有點容易,因為文件已經包含未壓縮的像素數據,並且您只需要知道如何找到大小和偏移量即可; 一些格式定義在Wikipedia( https://en.wikipedia.org/wiki/BMP_file_format )上,在這里: http : //www.digicamsoft.com/bmp/bmp.html
JPG比較棘手。 該文件不存儲像素,而是存儲“小波”,這些小波將轉換為您在屏幕上看到的像素圖。 要讀取此格式,您需要實現此轉換功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.