問題使用的顏色數量:編程獲得的圖像
- 鑑於PNG格式的圖像,什麼是編程方式獲取圖像中使用的顏色數最簡單的方法?
約束:
- 該解決方案將被integreted到Linux下運行shell腳本,所以適合在這樣的環境中的任何解決方案都行。
- 請注意,「圖像文件的顏色容量」不一定對應於「使用的顏色」。例如:在理論彩色容量爲256色的圖像文件中,只有7種顏色可能在實際使用中。我想獲得實際使用的顏色數使用。
問題使用的顏色數量:編程獲得的圖像
約束:
爲什麼寫自己的程序?
如果你有一個shell腳本執行此操作,您可以使用netpbm
公用事業:
count = `pngtoppm png_file | ppmhist -noheader | wc -l`
好玩。似乎沒有任何保證做到這一點的方法;在最糟糕的情況下,您需要掃描圖像並解釋每個像素,在最好的情況下,PNG將使用調色板,您可以在那裏檢查。
即使在調色板的情況下,你也不能保證每個條目都被使用 - 所以你(最好)得到一個上限。
http://www.libpng.org/pub/png/spec/1.1/PNG-Contents.html
..和塊的信息在這裏:
在Python圖像庫的Image.getcolors方法似乎做你想要什麼。
參宿的解決方案是不錯的:)我真的應該瞭解的NetPBM和ImageMagick的更好等一段時間。
僅供參考,作爲一個簡單而非常通用的解決方案:循環遍歷圖像中的每個像素,獲取r,g,b顏色值作爲單個整數。在列表中查找該整數。如果不存在,請添加它。完成所有像素後,打印列表中的顏色數量。
如果要計算出現次數,請使用散列表/字典而不是簡單列表,如果已在字典中找到,則遞增鍵值(計數器)。如果未找到,請將其添加起始計數器值1.
「通過圖像中的每個像素循環[...]」不僅僅是這個問題的更詳細的重新陳述嗎? – knorv 2009-10-25 19:53:52
可以說,任何程序都是一個更詳細的問題重申:)問題是提問者是否知道這一點,以及是否有助於告訴他。我根據問題的寫法做出了一個電話,並決定他可能不知道這個問題。 – 2009-10-27 21:55:37
以秒爲單位擊敗我。 – user5722 2009-10-25 07:41:15
他特別想要使用**實際**數量的顏色,所以基於顏色深度或調色板的上限不夠好 – Alnitak 2009-10-25 07:44:26
嘿,很好。我回答正確,然後在我的答案上擴大一點,以提供一個潛在的有用信息,併爲此給予評價。提醒我永遠不要爲我的陳述添加顏色或上下文..我應該在分號後停止。 – Maas 2009-10-25 07:48:48