For Y = 0 To Picture2.ScaleHeight - 1 For X = 0 To Picture2.ScaleWidth - 1 Ret = ColorRGB(Picture1.Point(X, Y)) If Ret(0) < 40 Or Ret(1) < 40 Or Ret(2) < 40 Then '深色点置黑色 Picture2.PSet (X, Y), vbBlack Else Picture2.PSet (X, Y), vbWhite End If Next X Next Y '除去噪点 For Y = 0 To Picture2.ScaleHeight - 1 For X = 0 To Picture2.ScaleWidth - 1 '如果是黑色的像素点 If Picture2.Point(X, Y) = vbBlack Then '一个点上面的3 个点是否存在黑点 If Picture2.Point(X - 1, Y - 1) = vbBlack Then GoTo NextPoint: If Picture2.Point(X, Y - 1) = vbBlack Then GoTo NextPoint: If Picture2.Point(X, Y + 1) = vbBlack Then GoTo NextPoint: '一个点的左右两侧是否存在黑点 If Picture2.Point(X - 1, Y) = vbBlack Then GoTo NextPoint: If Picture2.Point(X + 1, Y) = vbBlack Then GoTo NextPoint: '一个点下面的3个点是否存在黑点 If Picture2.Point(X - 1, Y + 1) = vbBlack Then GoTo NextPoint: If Picture2.Point(X, Y + 1) = vbBlack Then GoTo NextPoint: If Picture2.Point(X + 1, Y + 1) = vbBlack Then GoTo NextPoint: '如果周围不存在黑点,把该点设为白色 Picture2.PSet (X, Y), vbWhite End If NextPoint: Next X Next Y '为了查看除噪的效果,可以使用下面的语句将图片保存为test2.bmp SavePicture Picture2.Image, "test2.bmp" End Sub
ColorRGB 函数的内容在之前的文章中已有介绍,此处不再赘述,它的作用是将一个 16
文字符验证码》一文采用的方法相同。
'先二值化和除噪 |