源贴http://community.csdn.net/Expert/topic/4280/4280043.xml?temp=.5620996有回答如下“可以先二值化,然后把干扰线去掉,因为它们的象素宽度比数字窄,大概是一个象素单位
也没什么倾斜,直接分开字符识别就可以了 字体因为是统一的,可以用模板法。”我想知道如何二值化代码怎么写。
对图片这方面了解的比较少所以还请帮忙。

解决方案 »

  1.   

    http://xautdiph.51.net/Files/TechFile/SpecialFile/BasicKnowledge/Index.htm
    看第2章 基本概念简单的说就是找到一个比较恰当的值作为分界点。逐点获取图形像素,大于这个值的都当作白色,小于这个值的都当作黑色。
      

  2.   

    你可以用LOADIMAGE函数,在读取图片时可以读取成黑白图片
    private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
    Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
    Private Type BITMAP
            bmType As Long
            bmWidth As Long
            bmHeight As Long
            bmWidthBytes As Long
            bmPlanes As Integer
            bmBitsPixel As Integer
            bmBits As Long
    End TypeConst IMAGE_BITMAP As Long = 0
    Const LR_MONOCHROME As Long = &H1
    Const LR_LOADFROMFILE As Long = &H10
    dim bm as bitmap
    private command1_click()
     dim Hmemdc as long 
     dim pic as long
     pic = LoadImage(0, bmppath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or LR_MONOCHROME)
     selectobject Hmemdc,pic
     getobject pic,len(bm),bm
     bitblt me.hdc,0,0,bm.bmwidth,bmheight,hmemdc,0,0,vbsrccopy
     deletedc hmemdc
     me.refresh
    end subFORM1的AUTOREDRAW属性设为TRUE
      

  3.   

    恩谢谢,如果做点注释就更加好了。还有程序代码无法运行的。bitblt me.hdc,0,0,bm.bmwidth,bmheight,hmemdc,0,0,vbsrccopy
    提示 函数未定义
      

  4.   

    那是api,要先进行声明(在通用区或模块里)
    你可以在api viewer里面找到它的声明。。