准备图片和标签
这里我使用的是tfrecord数据文件来进行读取
第一步 图片获取
我使用的是java代码来制作图片(需要具体制作图片代码可以和我私聊)
(图片多少自己决定 但我可以给你建议 开始 每个类别 测试集300 训练集 3000 个人建议开始做的时候 后面可以加
)
//附带一小段主要代码 主要代码太长了
// 保存图片到指定的输出流
public static void output (BufferedImage image, OutputStream out)
throws IOException {
ImageIO.write(image, "JPEG", out);
}
//图片创建
public static void getmoreImage() throws Exception{
//遍历多少次创建多少张
for(int i=0;i<20;i++){
CreateImage_test img=new CreateImage_test();
BufferedImage image=img.getImage();
//保存到指定路径
String imagename="E:/temp/test/image/"+i+"_"+ img.getText()+".jpg";
OutputStream out=new FileOutputStream(imagename);
CreateImage_test.output(image,out);
}
System.out.println("打印完毕");
}
第二步 对图片打标签储存
//这里处理也使用java代码
public class Sortimage {
/*
* 1 获取每个图片名字
* 2 分割符分割
* 3 获取每个图片名字 和 值 写
* 入文本文件中 读取一个图片名字 换行下一个读取
* */
public static void main(String[] args) throws Exception {
//图片路径
String path="image0";
Sortimage.getFiles(path);
}
public static void getFiles(String path) throws Exception {
File file = new File(path);
//创建字节输出流对象
FileOutputStream fos=new FileOutputStream ("fuhao_train_jpg_84000.txt");
// 如果这个路径是文件夹
if (file.isDirectory()) {
// 获取路径下的所有文件
File[] files = file.listFiles();
System.out.println(files.length);
for (int i = 0; i < files.length; i++) {
// 如果还是文件夹 递归获取里面的文件 文件夹
if (files[i].isDirectory()) {
//System.out.println("目录:" + files[i].getName());
getFiles(files[i].getPath());
} else {
System.out.println("文件:" + files[i].getName());
String[] strings=files[i].getName().split("_");
// System.out.println(strings.length);
String num=strings[1].substring(0, 1);
//写数据
String text =files[i].getName()+" "+num+"\r\n";
System.err.println(files[i].getName()+" "+num);
fos.write(text.getBytes());
//System.out.println("前缀:"+string);
}
}
} else {
System.out.println("文件:" + file.getPath());
}
fos.close();
}
}
开始的时候想使用java处理这部分但是发现有点问题 果断使用python
第三步 图片灰度化
`
from PIL import Image
import os
import cv2
import numpy as np
input_dir = 'test/image/' #原地址
out_dir = 'test/image1/' #修改后地址
a = os.listdir(input_dir)
for i in a:
print(i)
src = cv2.imread(input_dir+i)
GrayImage = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
#二进制阈值化处理 这里阙值阙值处理有很多方法 目测THRESH_BINARY_INV这个效果最好
r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_BINARY_INV)
#print (r)
#设置卷积核 这里你自己可以调 卷积核大小
#kernel = np.ones((2,2), np.uint8)
#图像膨胀处理 这步看你怎么处理图片 目的是对目标膨胀处理
#erosion = cv2.dilate(b, kernel)
#设置卷积核
#kernel = np.ones((1,2), np.uint8)
#图像腐蚀处理 同上膨胀处理相反 这步建议不要 这里只是给你们参考
#erosion = cv2.erode(erosion, kernel)
cv2.imwrite(out_dir+i,b,[cv2.IMWRITE_JPEG_QUALITY,100])
# pyhton 简单方便
第四步
创建自己的文件路径 、
看下图 (训练集 测试集)
好了,前期的数据已经准备完毕 我们开始制作tfrecord 数据文件了 下一篇 接着来