扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
写在前面
成都创新互联公司专注于企业营销型网站建设、网站重做改版、渠县网站定制设计、自适应品牌网站建设、H5网站设计、商城开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为渠县等各大城市提供网站开发制作服务。上一篇文章Python实现识别手写数字—图像的处理中我们讲了图片的处理,将图片经过剪裁,拉伸等操作以后将每一个图片变成了1x10000大小的向量。但是如果只是这样的话,我们每一次运行的时候都需要将他们计算一遍,当图片特别多的时候会消耗大量的时间。
所以我们需要将这些向量存入一个文件当中,每次先看看图库中有没有新增的图片,如果有新增的图片,那么就将新增的图片变成1x10000向量再存入文件之中,然后从文件中读取全部图片向量即可。当图库中没有新增图片的时候,那么就直接调用文件中的图片向量进行计算就好。这样子算是节省了大量的时间。
所以本文就是从零开始建立一个这样的图片存储管理系统。
实现逻辑
第一次读入图片
我们的图库中拥有一大堆图片,每一张图片上面都是一个手写的数字,图片的名称为[数字内容]_[序号]。比如说一个图片的名称为2_3,代表这一张图片里面的数字是2,并且是“数字是2的第3张图片”。
存在一个csv文件作为我们的建议的图片数据库,名称为Data.csv。
首先我们读取图库中所有图片的名称,保存在fileNames中。然后读取Data.csv中所有数据。
提取出Data.csv的最后一列(一共10002列,第10001列说明该数字是什么数字,第10002列是图片的名称),也就是数据库中存储的所有图片的名称,存储在item中。
将新加入图库的图片名称保存在newFileNames中。如果Data.csv为空,那么就直接令newFileNames = fileNames。也就是说如果数据库中什么也没有,那么图库中所有图片都是新加入的。
如果Data.csv不为空,那么就将item里面的内容与fileNames的内容比较,如果出现了fileNames里面有的名称item中没有,那么就将这些名称放进newFileNames中。如果item里有的名称fileNames中没有,那就不管。
也就是说,我令我们的数据库只进不出。
现在我们得到了新加入图库的图片的名称newFileNames。
将newFileNames中的名称的图片带入上一文中函数GetTrainPicture进行处理,得到了一个nx10001的矩阵,每一行代表一个新加入的图片,前10000列是图片向量,第10001列是该图片的数字,保存在pic中。
将这些图片压入到数据库的后面。
读取之前数据库原有的图片向量,并与pic合并,得到目前拥有的所有的训练图片向量pic。
以上就是本章写的所有内容,下面放出代码来详细解释一下。
代码解析
主文件
import os import numpy as np import OperatePicture as OP import OperateDataBase as OD import csv ##Essential vavriable 基础变量 #Standard size 标准大小 N = 100 #Gray threshold 灰度阈值 color = 100/255 #读取原CSV文件 reader = list(csv.reader(open('DataBase.csv', encoding = 'utf-8'))) #清除读取后的第一个空行 del reader[0] #读取num目录下的所有文件名 fileNames = os.listdir(r"./num/") #对比fileNames与reader,得到新增的图片newFileNames newFileNames = OD.NewFiles(fileNames, reader) print('New pictures are: 'newFileNames) #得到newFilesNames对应的矩阵 pic = OP.GetTrainPicture(newFileNames) #将新增图片矩阵存入CSV中 OD.SaveToCSV(pic, newFileNames) #将原数据库矩阵与新数据库矩阵合并 pic = OD.Combination(reader, pic)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流