爬蟲爬取某網站圖檔後,識别圖檔中的字元。
核心沒什麼太難的内容,卡在Emgucv的draw字元身上了。
當然後來發現opencv下看别人用pil搞定了,python下也有自己的中文字庫很容易就替換了。
但Emgucv的資料太少了,最後想了一個很扯淡的招,自己畫兩張新圖,一張有顔色的作為目标(就當是水印),一張黑白的作為掩碼。最終效果如下圖所示。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLxcmeNJzaU9kMJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLycjN3MjMzITM5ATMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
核心代碼如下:
System.Drawing.Bitmap bmp;
bmp = new System.Drawing.Bitmap(w, h);
Graphics g = Graphics.FromImage(bmp);
Font drawFont = new Font("宋體", 18, FontStyle.Bold);
g.DrawString(ep.words , drawFont, Brushes.Red, new PointF(0, 0));
g.Save();
Image<Bgr, byte> temp2 = new Image<Bgr, byte>(bmp);
Image<Gray, byte> temp3 = new Image<Gray, byte>(bmp);
//我懶,更好的是自己再畫一張黑白的,我這就直接二值了。
temp3 = temp3.ThresholdBinary(new Gray(1d), new Gray(255d));
temp2.Copy(tempImage, temp3);
初開部落格,目的是交流與合作,本人QQ:273651820。