這兩天看zxing的**,只針對qrcode部分,首先還是對qrcode的版本和**做一定的了解,廣東發票的條碼屬於version10(57x57),解讀和debug基本也是依靠這個條碼來。
目標:了解解碼原理,解讀部分條碼難度的原因,能否針對實際應用做一定的改進,比如處理前做一定的除噪,或者銳化,優化二值化的闕值設定,針對發票的紅色邊框和文字考慮去掉紅色channel,避免列印錯位造成無法處理。
qrcode的解碼比較複雜,相信看過裡面的資料分割槽就會覺得頭皮發麻,特別是不同版本的讀取區域又有所不同,所以基本上了解它的原理和讀取方法即可。比較重要的還是識別定位點,三個定位點出來就可以獲得條碼的位置了,也可以做旋轉並進一步處理。
首先對影象做了灰度化處理,處理位8bit的灰色圖形,不過沒有採用預料中的0.3r+0.59g+0.11b,而是直接繪製到content中轉換,不知道效率和效果如何。
圖形二值化看不出在**處理,貌似看到有一處居然是模糊化的函式,不接,而且這個函式確實被呼叫過。
1 zxing對於旋轉一定角度的發票識別效果不好,是抓不到定位點還是其他原因呢?理論上來說旋轉應該對抓取定位點影響不大。
2 條碼定位點接觸到任何神色的點必然影響效果,例如紅色**線,或者連線紙的孔,甚至版本區也會受影響,或者可以嘗試取消紅色channel,並取消對定位點最後一道線的檢測要求,並根據這個形成的邊界吧右邊的邊界清空為白色,避免影響資料讀取(可能沒有,確定矩形後應該不會讀取矩形外的區域吧?)。
* 消對定位點最後一道線的檢測要求,修改後效果還可以
* 取消紅色channel,效果待檢測。。。
01 cppunit 原始碼解讀
背景 相關 stl 標準模板庫 有六大元件 容器 迭代器 演算法 仿函式 迭代介面卡 空間配置器 design pattern 設計模式 design pattern 代表了最佳的實踐,通常被有經驗的物件導向的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。cpp...
openTLD 原始碼解讀
首先是run tld 在其次就是tldexample 最後到了初始化函式tldinit 第乙個比較關鍵的函式 bb scan 將影象網格化,將首先 scale 1.2.10 10 21 個規格 在每個規格上打網格 這個函式有乙個比較重要的方法 ntuples 就是重複 因為網格上的點很多點有相同的x...
thinkphp原始碼解讀
thinkphp原始碼解讀 thinkphp原始碼的根目錄下是 index.php,是系統預設的 主頁,index.php中首先檢測的是 php執行環境,如果php版本小於 5.3.0則退出執行,定義是否為除錯模式,定義應用目錄,引入入口檔案。thinkphp是整個框架的入口檔案,在thinkphp...