圖片,還可以這樣玩兒
前幾天,我在裝linux軟體的時候,發現一個比較好玩兒的軟體,叫aview,他可以把一張圖片轉化成文本的圖案。於是,就把軟體推薦給同事們。gy同學覺得有意思,於是乎回家用腳本和程序也做出了同樣的效果。
整好,老王前兩周剛剛跟大家講過圖像的處理和文字的識別,於是乎就熱炒熱賣,用之前的程序,加了幾行代碼,就做到了同樣的效果。先給大家看看結果:
原圖:轉換後在shell中的效果:
怎麼樣,感覺還行吧~
作為程序員,就是有那麼一點點的好奇心,想知道怎麼弄的嘛?跟老王一起往下看吧~
·主流程
以上就是主流程的代碼,比較簡單,20行左右。具體操作如下:
1、從工程目錄的data下讀出文件;
2、為了在shell中輸出效果更好,將文件做一次長寬壓縮;
3、讀出圖片每個像素的RGB值;
4、將RGB做灰度處理;
5、將灰度圖列印成文字輸出。
怎麼樣,是不是很簡單呢?具體的我們往下走:
·讀取文件
讀文件很簡單,只需要用系統的庫,把文件讀取到內存即可。
·文件長寬壓縮
我們把讀取的文件,做長寬壓縮。我寫的函數支持長寬等比壓縮。壓縮的時候,可以自己通過坐標轉換,也可以用系統的函數實現。我這裡就圖簡單,用的系統函數。
·讀取像素RGB值
我們將圖像的每個像素的RGB值讀取出來,放入到二維數組中,方便處理。
·灰度化
接下來,就是將每個像素的RGB值轉化為灰度值。灰度值,其實就是把RGB三原色做一個加權,也等同於YUV中的Y通道值。老王在之前的《拍照怎麼搜題》中詳細講過怎麼樣做灰度,如果想詳細了解,可以訂閱老王的微信:simplemain 進行查閱。
推薦閱讀:
※互聯網如何更多的去獲得流量?
※使用瑞雪採集雲爬蟲採集大眾點評商家信息
※360雲盤收費回歸,你怎麼看?
※Final cut很難嗎?1招教你快速剪出優秀短視頻,超簡單!
※《暴雪將至》的首映現場情況怎麼樣?