真實案例:缺乏程式天賦的她,現在卻是「程式天才」!

鄉下老師

鄉下老師

  • 2019-05-03 14:23
  • 更新:2019-06-18 09:32

真實案例:缺乏程式天賦的她,現在卻是「程式天才」!

(圖/shutterstock)

 

作者:鄉下老師

 

 

我們正在研究如何從類似上面的發票影像中

擷取出 QR code的子影像,

一般的 QR code Reader

是可以讀取二維條碼並辨識內容,

但是它們沒有能力

從整張圖片的複雜背景中自己找到 QR,

像上面這種還有傾斜的掃描影像當然更困難。

怎麼做呢?方法當然有很多,

甚至我的第一版是跟傳統找 QR的方式一樣,

設法搜尋出全圖中的所有方形目標,

然後排列出 QR的左上、右上與左下的三個方塊,

找到正確的方塊組合 QR就被鎖定了!

但是這樣做好複雜,程式難寫運算時間也比較久,

於是想到一個簡單一點的方法。

 

 

如上圖先將圖片二值化成黑白圖,

接下來用所謂的「連通法」,

就是將狹窄的空白區塗黑的意思!

這樣 QR內部的大部分破碎的空白區就會被塗黑連成一片,

我們再辨識黑色的塊狀目標,

只要是大小合適也呈正方形的區域就當作是 QR了!

切下來給 QR Reader去讀吧!

 

這樣的邏輯似乎不太嚴謹,

但對於已知的發票格式來說,這樣就夠了!

極少有剛好差不多大的方形區塊但不是 QR,

即使有,也不過就是

QR Reader無法辨識解析失敗放棄而已,

我們的工作只是盡量找出最可能的區塊,

寧可錯殺也不要放過就好了!

 

我想出這個方法後就交代 RD去寫程式了!

她很快就做出結果,此時我才想起來,

她其實沒看過任何作連通法的程式範例!

我也沒有教過她怎麼寫?

好厲害,她就這麼自己輕鬆地寫出實作連通法的程式,

記得我自己第一次寫的時候也不是很容易的!

 

隨便將分解動作講一講,

大多數人可能就頭昏了!

首先要在某一行的左邊開始找到一個空白點的左邊是黑點,

將此空白點作為一個起點,繼續搜尋,

找到下一個右邊是黑點的空白點,作為終點。

計算起終點的間距,

如果小於特定門檻值就將這一段空白點全部塗成黑點。

重複以上動作直到全圖的右邊緣,

再回頭到下一行做一樣的事情。

 

 

這個程式不簡單

她卻能獨自快速完成!

這些邏輯可不是簡單的迴圈,還蠻複雜的!

我的經驗是這種邏輯的複雜度,

我必須先寫好範例讓學生或工程師模仿,

要他們自己寫出來可能會卡關還出錯,

即使對了也會花蠻久的時間,

執行速度效能也不會太好!

但是我的 RD若無其事的第一次就揮筆立就!

大概用不到一小時吧?

我回頭看進度時她已經全部寫好還都測試完所有樣本,

都可以正確鎖定 QR了!

 

她是天才嗎?現在看起來很像!

但其實我知道她不是!

她是我從大一開始教起的學生,

其實她剛開始學程式的時候,

理解領悟的速度只是勉強跟上而已!

但是她很喜歡這些東西,

我也支持她鼓勵她繼續學習,

我是絕對相信這些程式技巧與學騎腳踏車一樣,

有人學得快,有人學得慢,

但是學會了騎起來就完全一樣!

你應該不會看出

一般人騎腳踏車的「天賦差異有多大?」

 

事實上一如我的預期,她也很努力,

從來不會規避學習新的東西!

不知不覺的,已經跟著我學程式加上工作超過九年了!

我常開玩笑說她是我的博士生!

現在她寫程式就跟一般人講話或寫信一樣的輕鬆!

腦筋想清楚的幾何關係

很快就能寫成程式,還很少錯誤。

做同樣的事情,

我前面聘用的男學生與男員工都遠遠不如,

反而是「學姊」常常幫那些男生收拾爛攤子!

她算是顛覆了寫程式男生比較厲害,

「女生根本不行」的刻板印象!

 

 

其實她是很保守甚至很膽小的個性,

跟一般電影裡出現的電腦高手(駭客)形象完全相反!

所有業務接觸過的合作夥伴或客戶都印象深刻,

沒有絕對必要時,她總是不愛說話的!

但凡聽過她做工作報告的人,

又都很驚訝她的程式功力!

以程式技巧而言,她真的已經盡得我的真傳,

甚至猶有過之!她會的程式語言比我還多!

因為我們常常要一起出遠門(到高軟)當顧問,

之前她不敢開車,雖然很早就考到了駕照,

但是與多數女生一樣,因為刻板印象,

大家都說女生開車不行,

她也顯得很不敢開車上路!

但總是由老師我開車當司機載她,怪怪的!

大學生時老師開車載學生還說得過去,

現在以她的年紀,

如果早婚的話都得開車載孩子上幼稚園了!

不幫老闆(老師)開車應該扣薪水吧?

 

雖然我自己開車也還好,

但我很堅持要她長大!

不敢開車就每天逼她在校園裡面開幾圈,

出門遇到簡單的路況,就立即下車換人要她開。

剛開始她在高速公路上有如驚弓之鳥,

速度慢到接近「龜速」違規的地步!

我忍耐著盡量不批評她,

只提醒她可能有危險的狀況,

讓她自己去體驗適應環境,

用她自己覺得最穩當的方式開。

正常開車能有多難呢?又不是去參加F1賽車?

女生當然不會比男生笨,熟能生巧嘛!

現在出門洽公通常就是她至少負責開一半路程了!

而且我還常常要在一旁提醒她別開太快了!

她開車已經自在熟練得像寫程式一樣了!

 

只要給予機會、範例與鼓勵

沒有人學不會寫程式!

這就是最簡單的事實,

每一個人都可以學會自己煮飯做菜,

講話走路開車等等基本生活技能,

我認為寫程式也是一樣的!

只要給學習者適當的機會、範例與鼓勵,

沒有人是學不會寫程式的!

真正你能不能變成高手的關鍵

一定不是所謂的天賦,

而是你到底喜不喜歡做那件事?

喜歡加上足夠的時間,

你一定會變成武林高手!

 

 

本文由 鄉下老師 授權轉載, 原文 於此

未經授權,請勿轉載侵權!

(責任編輯:CMoney編輯 / Alodia)
(本文圖片來源:shutterstock)

菁英軟體工程師戰鬥營

第五屆 熱烈招生中!

想學程式、成為工程師

卻怕自己沒基礎、學不好嗎?

這裡有史上最專業的魔鬼訓練課程,

讓你有機會 朝夢想前進

全程免費、不用基礎從頭開始、培養就業競爭力!

填寫報名表,將有專人與您聯絡

名額有限>>馬上報名

詳細活動介紹>>點我查看!

有問題歡迎私訊粉專:從0開始學程式!

或是寄信到:engineertraining@cmoney.com.tw

 

 

 

 

鄉下老師

鄉下老師

逸中軟體設計公司CEO,前台灣首府大學副教授。 當了大半輩子的老師,53歲離開校園投入職場, 雖然在台南麻豆鄉下創業,但立志成為台灣頂尖的影像辨識高科技公司! 也希望以自身經驗對台灣教育提出更多振聾發聵的建言!

逸中軟體設計公司CEO,前台灣首府大學副教授。 當了大半輩子的老師,53歲離開校園投入職場, 雖然在台南麻豆鄉下創業,但立志成為台灣頂尖的影像辨識高科技公司! 也希望以自身經驗對台灣教育提出更多振聾發聵的建言!