计算机视觉+机器学习 (一)识别手写数字 (2)

计算机视觉+机器学习 (一)识别手写数字 (2)

下载完MNIST数据集会出现四个文件。

一.首先先解析测试图片并保存。

如下:(第一步:我把需要解析的文件放在了E盘“E://opencv-4.1.-/tensorflow_MNIST”,tensorflow_MNIST文件夹下

            【注意,此刻的解析文件为MNIST数据集中的t10k-images.idx3-ubyte】)

           (第二步:我把解析出来的图片命名格式为1.jpg,2.jpg,3.jpg,4.jpg...... 并保存在E盘“E://opencv-4.1.-/tensorflow_MNIST/testImages”,testImages文件夹下【注意,要在代码中“E://opencv-4.1.-/tensorflow_MNIST/testImages//”加两个单斜线如代码所示,之前出现过错误!】) 

           (第三步:等待解析,之后完成可以去相应文件夹打开查看,附截图一张【testImages文件夹下的测试图片】)

import numpy as np
import struct
import cv2

def readfile():#读取源图片文件
    with open('E://opencv-4.1.0//tensorflow_MNIST//t10k-images.idx3-ubyte','rb') as f1:
        buf1 = f1.read()
    return buf1

def get_image(buf1):#解析并保存图片
    image_index = 0
    image_index += struct.calcsize('>IIII')
    magic,numImages,imgRows,imgCols=struct.unpack_from(">IIII",buf1,0)
    im = []
    for i in range(numImages):
        temp = struct.unpack_from('>784B', buf1, image_index)
        im=np.array(temp)
        im2=im.reshape(28,28)
        cv2.imwrite("E://opencv-4.1.0//tensorflow_MNIST//testImages//"+str(i)+".jpg" , im2) #保存路径自己设置
        image_index += struct.calcsize('>784B')  # 28*28=784(B)
        if i%20==0:#知道图片保存的进度
            print(i)
        else:
            print(i)

if __name__ == "__main__":
    image_data = readfile()
    get_image(image_data)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

 二.然后可以开始解析训练集图片并保存 

与一中的方法一致,只不过更改了一下路径还有保存文件夹的位置。【注意,此刻的解析文件为MNIST数据集中的train-images.idx3-ubyte】

(我将训练集图片保存在同样目录E盘“E://opencv-4.1.-/tensorflow_MNIST/trainImages”中trainImages文件夹下)代码如下:

import numpy as np
import struct
import cv2

def readfile():#读取源图片文件
    with open('E://opencv-4.1.0//tensorflow_MNIST//train-images.idx3-ubyte','rb') as f1:
        buf1 = f1.read()
    return buf1

def get_image(buf1):#解析并保存图片
    image_index = 0
    image_index += struct.calcsize('>IIII')
    magic,numImages,imgRows,imgCols=struct.unpack_from(">IIII",buf1,0)
    im = []
    for i in range(numImages):
        temp = struct.unpack_from('>784B', buf1, image_index)
        im=np.array(temp)
        im2=im.reshape(28,28)
        cv2.imwrite("E://opencv-4.1.0//tensorflow_MNIST//trainImages//"+str(i)+".jpg" , im2) #保存路径自己设置
        image_index += struct.calcsize('>784B')  # 28*28=784(B)
        if i%20==0:#知道图片保存的进度
            print(i)
        else:
            print(i)

if __name__ == "__main__":
    image_data = readfile()
    get_image(image_data)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

附截图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值