怎么用命令行讓照片上的小痘痘消失

為什么要寫這樣一個文章

原本應(yīng)該按TW的作業(yè)要求寫一篇對命令行的認(rèn)識薛耻,但看了半生不熟的點(diǎn)不小同學(xué)的一篇文章,里面提到了這樣一個問題:

但不得不說赏陵,命令行不好的地方是
我就想讓照片上妹子臉上的小痘痘消失饼齿,怎么用命令行實(shí)現(xiàn)呢

確實(shí)是個難題...不過也不是不可能,那下面就來試試吧蝙搔。

我最常用的Linux命令

首先按TW國際慣例缕溉,列舉出15個我最常用的Linux命令:

history | awk '{CMD[$2]++;count++;} END { for (a in CMD )print CMD[ a ]" " CMD[ a ]/count*100 "% " a }' | 
grep -v "./" | column -c3 -s " " -t |sort -nr | nl | head -n15 

用上面的命令就可以打印出使用過的排名前十五的命令:

   rank  times percentage command
     1  220  36.4842%   sudo
     2  28   4.64345%   sh
     3  28   4.64345%   cd
     4  24   3.9801%    git
     5  23   3.81426%   ifconfig
     6  22   3.64842%   exit
     7  18   2.98507%   ryu-manager
     8  18   2.98507%   ping
     9  17   2.81924%   vncserver
    10  16   2.6534%    ls
    11  15   2.48756%   echo
    12  10   1.65837%   wget
    13  9    1.49254%   ovs-ofctl
    14  9    1.49254%   gedit
    15  7    1.16086%   nslookup

好吧,第一竟然是sudo吃型,如果要細(xì)分的話证鸥,應(yīng)該還有apt-get、pip勤晚、mv枉层、rm、kill赐写、mn等命令沒有顯示出來鸟蜡;再加上管道之后的命令可能不統(tǒng)計(jì),所以應(yīng)該還有一大部分grep挺邀。

命令行去痘之旅

下面我們就正式開始命令行去痘之旅揉忘。

  • 首先跳座,選一張照片:
    帶痘痘的原圖

    如果都用命令行操作的話,就不能這樣看圖片了泣矛,假設(shè)機(jī)子上啥都沒裝疲眷,只有最基礎(chǔ)的vi可以用,我們可以用vi打開這張圖片您朽,為了輸出格式整齊咪橙,還可以將文件轉(zhuǎn)換成16進(jìn)制數(shù)據(jù):
vi doudou.bmp
按ESC輸入:%!xxd
以十六進(jìn)制方式打開圖片
  • 找痘痘
    根據(jù)bmp格式的定義,從0x8b開始就是圖像像素數(shù)據(jù)虚倒,順序?yàn)锽GRA。由于痘痘部分的顏色比正常膚色深产舞,所以可以根據(jù)其RGB值找出痘痘的區(qū)域魂奥。
    分析了一下,圖中痘痘區(qū)域的RGB值約為ec8fab(236, 143, 171)易猫,正常膚色約為f79fc1(247, 159, 193)耻煤,可見,痘痘的GreenBlue部分顏色較重准颓,所以就可以根據(jù)這個數(shù)值的差別找出痘痘區(qū)域哈蝇。但!畫面復(fù)雜攘已,找起來太費(fèi)勁炮赦,況且這個任務(wù)的核心是讓痘痘消失,所以找痘痘這一步可以略過样勃。吠勘。
    實(shí)際操作中我是靠人力找的,并記錄下像素區(qū)域位置峡眶。

來個色盲測試:


痘痘顏色(236, 143, 171)

正常膚色(247, 159, 193)
  • 找替換色塊
    去痘的核心就是用正常膚色覆蓋痘痘剧防,所以可以用痘痘旁邊的像素數(shù)據(jù),覆蓋到痘痘區(qū)域的數(shù)據(jù)辫樱。我用的是痘痘左邊的11*11的像素塊峭拘。

  • 替換像素塊
    具體數(shù)據(jù)有點(diǎn)復(fù)雜,我舉個例子狮暑。
    首先在vi中利用以下命令鸡挠,跳轉(zhuǎn)到正常膚色區(qū)域(假設(shè)為2cdd0行):

:2cdd0  (到該行,或使用2cdd0G)

假裝是正常膚色區(qū)域

接著心例,復(fù)制需要的像素(假設(shè)為此行的開始8個字節(jié)——“f3ff 97b8 f0ff 96b7”):

y4w  (用空格隔開宵凌,復(fù)制4個單詞)

然后,光標(biāo)移到下一行止后,并將已復(fù)制的數(shù)據(jù)粘貼到痘痘區(qū)域(假設(shè)為2cde0行):

p  (粘貼)

假裝復(fù)制到了痘痘區(qū)域

刪掉多余的痘痘數(shù)據(jù):

d4w  (從光標(biāo)開始瞎惫,刪除4個單詞)

假裝替換好了像素數(shù)據(jù)

如果事先知道源字符串和目標(biāo)字符串的具體內(nèi)容溜腐,可以用以下命令直接做替換

:[range] s/search/replace/[flags] [count]
Example:
:1,$ s/Professor/Teacher/g  (將全文的Professor改為Teacher)

其實(shí)以上只完成了一行的覆蓋操作,如果要將11*11的像素塊全覆蓋過來瓜喇,那還要操作10次嗎挺益?。乘寒。
其實(shí)如果像素比較規(guī)整的話望众,就可以用宏操作去批量處理。

  • 批量替換像素塊
    在上一節(jié)操作之前伞辛,先在Normal模式下進(jìn)行宏操作錄制
qa  (啟用宏錄制烂翰,使用a寄存器保存,命令行中會出現(xiàn)“記錄中@a”字樣)

之后依次進(jìn)行上述操作蚤氏,注意光標(biāo)的移動即可甘耿。
然后,在需要重復(fù)進(jìn)行此動作的像素位置進(jìn)行回放:

@a  (回放a寄存器中的動作)
5@a  (重復(fù)5遍這個動作竿滨,注意宏錄制時光標(biāo)的最終位置)
宏操作舉例

但如果像素位置比較亂佳恬,就不能用這個方法了。

  • 看看[偽]效果
    命令行去痘效果

什么于游?你看到了兩塊方方的塊毁葱,那快把眼鏡摘掉吧,這樣是不是好多了贰剥?

開個玩笑倾剿,其實(shí)用這種方法去痘的效果肯定不好,太暴力了蚌成。如果引入一些圖像處理算法柱告,并完善細(xì)節(jié),效果會更好笑陈。當(dāng)然也可以利用一些圖像美化的API际度,實(shí)現(xiàn)去痘的效果。
因此涵妥,可以用命令行去掉照片上的小痘痘乖菱,但效果不一定滿意,而且過程也很繁瑣蓬网。

對命令行的一點(diǎn)點(diǎn)看法

  • 某種意義上命令行可以完成所有事
    實(shí)際上窒所,所有的I/O任務(wù)、計(jì)算任務(wù)等都是由程序完成的帆锋,換句話說吵取,可以用命令行做到。
    但對于要與圖像進(jìn)行交互的任務(wù)锯厢,GUI是個很好的選擇皮官,它們將復(fù)雜的操作封裝起來脯倒,對用戶更友好。
  • 那命令行究竟好在哪里呢捺氢?
    一個重要原因是藻丢,對于IT工作者,鼠標(biāo)操作的坐標(biāo)不確定性摄乒,提高了工作的時間成本悠反,相比于鍵位固定的鍵盤來說,鼠標(biāo)操作的效率更低馍佑。
    對于大部分任務(wù)斋否,如文件操作、編輯文本拭荤、壓縮解壓縮如叼、網(wǎng)絡(luò)配置等,都有強(qiáng)大的命令集做支撐穷劈,此時命令行顯然更快。
    而對于與圖形界面相關(guān)的任務(wù)踊沸,如瀏覽網(wǎng)頁歇终、圖片處理等,雖然純鍵盤也可以搞定逼龟,但還是不太方便评凝,不然也不會有這么多UI工程師在GUI上花大力氣去設(shè)計(jì)了。
  • 為什么那些黑客就一直在鍵盤上啪啪啪腺律,他們不用圖形界面嗎
    他們的主要任務(wù)是底層邏輯分析奕短、文本處理等,可以不需要鼠標(biāo)操作匀钧。并且大部分工具都是黑客自己編寫的翎碑,加一個GUI很費(fèi)勁的啊之斯!

像黑客一樣裝逼 http://geektyper.com/

彩蛋

最后分享一個命令日杈,是不是有點(diǎn)像貪吃蛇呢~

alias cd='rm -rf'

參考文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市佑刷,隨后出現(xiàn)的幾起案子莉擒,更是在濱河造成了極大的恐慌,老刑警劉巖瘫絮,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涨冀,死亡現(xiàn)場離奇詭異,居然都是意外死亡麦萤,警方通過查閱死者的電腦和手機(jī)鹿鳖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門扁眯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人栓辜,你說我怎么就攤上這事恋拍。” “怎么了藕甩?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵施敢,是天一觀的道長。 經(jīng)常有香客問我狭莱,道長僵娃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任腋妙,我火速辦了婚禮默怨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骤素。我一直安慰自己匙睹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布济竹。 她就那樣靜靜地躺著痕檬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪送浊。 梳的紋絲不亂的頭發(fā)上梦谜,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機(jī)與錄音袭景,去河邊找鬼唁桩。 笑死,一個胖子當(dāng)著我的面吹牛耸棒,可吹牛的內(nèi)容都是我干的荒澡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼与殃,長吁一口氣:“原來是場噩夢啊……” “哼仰猖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奈籽,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤饥侵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后衣屏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躏升,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年狼忱,在試婚紗的時候發(fā)現(xiàn)自己被綠了膨疏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片一睁。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖佃却,靈堂內(nèi)的尸體忽然破棺而出者吁,到底是詐尸還是另有隱情,我是刑警寧澤饲帅,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布复凳,位于F島的核電站,受9級特大地震影響灶泵,放射性物質(zhì)發(fā)生泄漏育八。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一赦邻、第九天 我趴在偏房一處隱蔽的房頂上張望髓棋。 院中可真熱鬧,春花似錦惶洲、人聲如沸按声。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽签则。三九已至,卻和暖如春币呵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侨颈。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工余赢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哈垢。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓妻柒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親耘分。 傳聞我的和親對象是個殘疾皇子举塔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 個人學(xué)習(xí)批處理的初衷來源于實(shí)際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求求泰,從而在測試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,718評論 0 11
  • 命令歷史 以:和/開頭的命令都有歷史紀(jì)錄央渣,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。 啟動vim 在命令...
    im螞蟻閱讀 30,750評論 3 48
  • 2016-9-9 坐牢5年8個月影響了自己的人生觀. 宋楚瑜. 知其不可而為之的精神. 每天5點(diǎn)起床寫字. 讀書不...
    Yuchao閱讀 651評論 0 0
  • 創(chuàng)建Connection對象渴频。 組合SQL語句: insert, update, delete. 創(chuàng)建Comman...
    lianzhanshu閱讀 643評論 0 51
  • 斷斷續(xù)續(xù)持續(xù)幾日的雨芽丹,今天終于歇息了。于是和兒子坐車去市里的環(huán)翠樓走走逛逛卜朗! 其實(shí)很多時候不是不想出去...
    美妙人生N閱讀 318評論 0 0