毕设(一):神经网络识别更正,图像预处理完善

前天把模型导入进行识别,硬是没一个对的。去检查发现,是pandas打乱了label到character的索引,要不是查看别人写的代码,还有自己去翻一翻变量控制器,还真找不出来。
另外,为了提高识别精度,我还打算将输入的图片进行归一化,即0~255缩小到 0 ~ 1, 和训练的时候预处理数据相同。
错误索引:

code_to_character = ['零', '一', '二', '三', '四', '五', '六', '七',
                 '八', '九', '十', '百', '千', '万', '亿']

正确索引:

code_to_character = ['一', '七', '万', '三', '九', '二', '五', '亿',
                 '八', '六', '十', '千', '四', '百', '零']

今天还把图像处理更加具体细化,即输入的图片限制尺寸大小;截取的图片必须在外围padding,让整个字处在中间,提高识别率。

# =============================================================================
# 用于裁剪下来的文字缩小,提高识别率
# =============================================================================
def imgNarrow(image):
    COLOR=[255,255,255]
    image = cv2.copyMakeBorder(image,20,20,20,20,cv2.BORDER_CONSTANT,value=COLOR)
    t, image = cv2.threshold(image,120,255,cv2.THRESH_BINARY_INV)
    image = skimage.transform.resize(image, (64, 64, 1), mode="reflect")  #归一化的图片
    return image
# =============================================================================
# 防止图片过大,使得噪声裁切都受到影响,将其限制尺寸
# =============================================================================
def imgNormalization(image):
    height = image[0]
    width = image[1]   
    if height > 768 or width > 768:
        height = height/2
        width = width/2
        image = cv2.rezize(image, height, width,3)
        imgNormalization(image)
    else:
        return image

最后对于图像处理还有一个问题要处理,也就是文字图像要reshape成(1,64,64,1)才能送入到预测器,并且不需要反色,因为二值化已经变成黑底白字了。

image2 = constant.reshape(1,64,64,1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值