我們做的項目需要匹配兩張圖片,比如機頂盒輸出的視頻,設置的菜單畫面有很多漢字,並不需要認出這些漢字,通過標註漢字串的輪廓,對比兩張圖片的輪廓位置和大小,就可以判斷畫面相似度,進而判斷當前處於哪個菜單。
那麼,如何定位這些漢字串的輪廓呢?
請看原圖:
最容易想到的方法是先使用opencv的findContours()函數找出所有的輪廓,然後再對每個輪廓去找矩形----使用的是boundingRect()函數。但這樣找出來的矩形並不能完全覆蓋漢字字符串的外部,只能在比較方正的漢字中定位到少數幾個矩形框,效果很不理想,而且相當耗費資源,速度慢。
我研究了一個算法,可以快速定位這些漢字串的外輪廓,簡述如下:
1、先將圖像二值化
2、從上到下,從左到右搜索像素
3、對聚集點進行統計。方塊漢字的規律是點和空白差不多,找到聚集區域後,我們可以記住左上和右下的點,構成矩形。
效果如下,輪廓是程序用紅色邊框標出:
歡迎探討。