图片单个数字识别

import os
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
import cv2

#需要识别的图片的地址
path_img = "./test.jpg"

#knn需要的资源地址
path = "./trainingDigits"
files = os.listdir(path)
data = []
target = []

#将数据读取到data中和target中去
for file in files:
    target.append(file[0])
    file_path = path + "/" + file
    f = open(file_path, "r")
    txt = f.read()
    text = []
    for t in txt:
        if t == '\n':
            continue
        text.append(int(t))
    data.append(text)

#转换数据类型
target = np.array(target)
target = target.astype(int)
data = np.array(data)

#将数据传输给机器
knn = KNeighborsClassifier()
x, x_test, y, y_test = train_test_split(data, target, test_size=0.1)
knn.fit(x, y)
# end = knn.predict(x_test)
# print(list(end))
# print(list(y_test))


#预测区代码
img_txt = []

#加载图片到img中
img = cv2.imread(path_img)

#将图片转换为32x32像素
img = cv2.resize(img ,(32,32))

#将图像二值化
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img[img <= 150] = 0
img[img > 150] = 255
# print(img)

#将图片转换为上方机器训练格式的数据
for i in img[:,]:
    for x in i:
        if 255 == x:
            img_txt.append(0)
        else:
            img_txt.append(1)

#格式转化
img_txt = [img_txt]

#预测
end = knn.predict(img_txt)
print(end)

#显示图片
# cv2.imshow("img", img)
# cv2.waitKey(0)
 

        图片的大小推荐为32x32左右(代码会自动将图片修改为32x32)

        代码需要的机器学习资源:https://download.csdn.net/download/qq_58419337/87581726

        测试图片:

        运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值