from skimage import io # scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,正好与matlab一样,用来图片输入输出操作
import os # 处理文件和目录
import cv2
import numpy as np
from sklearn.ensemble import RandomForestClassifier
# from sklearn.model_selection import train_test_split # 决定划分训练集测试集比例
from PIL import Image # PIL (Python Image Library) 是 Python 平台处理图片的事实标准,兼具强大的功能和简洁的 API
product_image_dir = r'./product_image/'
path_list = os.listdir(product_image_dir) # 对产品图片按名字排序
path_list.sort(key=lambda x: str(x[:-4]))
# for k in range(0,len(path_list)):
# print(path_list[k])
test_dir = r'test/'
# 切割图片,并保存到./test_dir/文件夹下
def cropImage(path):
assert os.path.exists(path),print( path + " :待测试图片文件夹不存在") # 判断待测试图片文件夹是否存在
assert os.path.exists(test_dir), os.makedirs(test_dir) # 判断切割图片存储的文件夹是否存在,不存在则创建
path_list = os.listdir(path)
# 按顺序读取图片并切割
path_list.sort(key=lambda x:str(x[:-4]))
i = 0
for imageName in path_list:
print(imageName)
if (imageName == ".DS_Store"): # 删除mac自动生成的.DS_Store
os.remove(imageName)
im = Image.open(product_image_dir + imageName)
pro1 = (420, 0, 920, 2048) # 设置图像裁剪区域
image1 = im.crop(pro1) # 图像裁剪
image1.save(test_dir +str(i) + '-1.jpg')
pro2 = (980, 0, 1480, 2048)
image2 = im.crop(pro2)
image2.save(test_dir +str(i) + '-2.jpg')
pro3 = (1560, 0, 2060, 2048)
image3 = im.crop(pro3)
image3.save(test_dir +str(i) + '-3.jpg')
i = i + 1
cropImage(product_image_dir)
data_x = [] # 定义数据集列表,图片
data_y = [] # 定义数据集列表,图片标签
dir_list_1 = os.listdir('./cut_image/negative/') # 列出文件夹下所有的目录与文件,返回一个由文件名和目录名组成的列表,
for name in dir_list_1:
if (name == "DS_Store"): # 删除mac自动生成的.DS_Store
os.remove(name)
path = './cut_image/negative/' + name # 循环
img = io.imread(path) # 从文件读取图象
img = np.reshape(img, (-1)) # 创建一个改变了尺寸的新数组,原数组的shape保持不变,变成只有一行数据的矩阵
# print(img) # 打印查看图片变成数组
data_x.append(img) # 将数据添加入列表
data_y.append(-1) # 将数据添加入列表
dir_list_2 = os.listdir('./cut_image/positive/') # 列出文件夹下所有的目录与文件,不好的图片
for name in dir_list_2: # 同理也是读取图片变成一维的列表
path = './cut_image/positive/' + name
img = io.imread(path)
img = np.reshape(img, (-1))
# print(img)
data_x.append(img)
data_y.append(1)
data_x = np.array(data_x) # 将所有列表数据集合变成矩阵数据
data_y = np.array(data_y) # 同上
# print(data_x)
# 测试集图片处理
test_x = [] # 定义数据集列表,图片
dir_list_test = os.listdir('test/') # 按顺序列出文件夹下所有的目录与文件
def comp(x):
dir_list_test = x[0:x.find('.')].split('-')
return (int(dir_list_test[0]), int(dir_list_test[1]))
dir_list_test = sorted(dir_list_test, key=comp)
for name in dir_list_test:
# print(name)
if (name == ".DS_Store"): # 删除mac自动生成的.DS_Store
os.remove(name)
path = 'test/' + name
img = io.imread(path)
img = np.reshape(img, (-1))
# print(img)
test_x.append(img)
test_x = np.array(test_x) # 将所有列表数据集合变成矩阵数据
x_train,y_train = data_x, data_y
x_test = test_x
clf = RandomForestClassifier(n_estimators=40,max_depth=8) # 利用随机森林分类器模型对数据进行分类
clf.fit(x_train, y_train) # 用训练数据拟合分类器模型开始训练
predict = clf.predict(x_test) # 返回预测标签
# print(predict,'\n',dir_list_test)
# 写入txt文档
def save_lst_to_file(predict,file_path,path_list):
with open(file_path, 'w') as f:
i = 0
leng = (len(dir_list_test))/3
# print(leng)
j=0
for i in range(0,int(leng)):
# print(i)
content = []
# content.append(str(i)+" ")
im = cv2.imread(r'./product_image/'+path_list[i])
# im = cv2.imread(r'./test/'+dir_list_test[i])
# print(im)
if ((predict[j] == 1) & (predict[j+1] == 1) & (predict[j+2] == 1)):
content.append("合格")
else:content.append("不合格 ")
if (predict[j] == -1):
content.append("1")
cv2.rectangle(im, (460, 650), (920, 2000),(255,0,0),3) # 画矩形框
# cv2.imshow("im", im)
cv2.waitKey(0)
cv2.imwrite(path_list[i],im) # 存储结果图像
if (predict[j+1] == -1):
if(predict[j] == -1):
content.append(",2")
else:
content.append("2")
cv2.rectangle(im, (980, 650), (1480, 2000),(255,0,0),3) # 画矩形框
cv2.imwrite(path_list[i],im) # 存储结果图像
if (predict[j+2] == -1):
if ((predict[j] == 1)&(predict[j+1] == 1)):
content.append("3")
else:
content.append(",3")
cv2.rectangle(im, (1560, 650), (2060, 2000),(255,0,0),3) # 画矩形框
cv2.imwrite(path_list[i],im) # 存储结果图像
content.append("\n")
j=j+3
f.writelines(content)
print("预测结果写入 product_prediction.txt 文档成功!\n")
print("预测图片载入当前目录成功!\n")
save_lst_to_file(predict,'./product_prediction.txt',path_list)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 基于Python机器学习实现的电焊焊缝缺陷识别源码+详细注释+焊接缺陷数据集.zip基于Python机器学习实现的电焊焊缝缺陷识别源码+详细注释+焊接缺陷数据集.zip基于Python机器学习实现的电焊焊缝缺陷识别源码+详细注释+焊接缺陷数据集.zip基于Python机器学习实现的电焊焊缝缺陷识别源码+详细注释+焊接缺陷数据集.zip基于Python机器学习实现的电焊焊缝缺陷识别源码+详细注释+焊接缺陷数据集.zip 基于Python机器学习实现的电焊焊缝缺陷识别源码+详细注释+焊接缺陷数据集.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于Python机器学习实现的电焊焊缝缺陷识别源码+详细注释+焊接缺陷数据集.zip (421个子文件)
Product-testing.iml 398B
36-3.jpg 83KB
75011771177501177117O19021701881365_Pr000中pin、右pin焊点偏,右pin焊黑.jpg--40-2.jpg 82KB
0-2.jpg 82KB
20173619233603_75011771177501177117O19021701881365_Pr000_e[]中pin、右pin焊点偏,右pin焊黑.jpg--35-2.jpg 82KB
positive.41-2.jpg 81KB
positive.6-2.jpg 80KB
20174517144547_75011771767501177176O17021701876510_Pr000_e[]中pin、右pin焊点偏.jpg--34-3.jpg 80KB
16-3.jpg 80KB
37-3.jpg 80KB
20173906013953_75011772137501177213O06081702174731_Pr000_e[]右pin焊点偏.jpg--33-2.jpg 79KB
22-2.jpg 79KB
20173403213431_75011772137501177213O03091702230430_Pr000_e[]三对pin焊点偏.jpg--18-2.jpg 79KB
20174517144547_75011771767501177176O17021701876510_Pr000_e[]中pin、右pin焊点偏.jpg--34-1.jpg 79KB
16-1.jpg 79KB
20172403202448_75011772137501177213O03091702230295_Pr000_e[]三对pin焊点偏.jpg--21-2.jpg 79KB
21-2.jpg 79KB
positive.2-2.jpg 79KB
20173505203506_75011772137501177213O05081702174149_Pr000_e[]中pin、右pin焊点偏.jpg--44-2.jpg 78KB
25-2.jpg 78KB
positive.21-2.jpg 78KB
positive.31-2.jpg 78KB
positive.39-2.jpg 78KB
30-3.jpg 78KB
positive.19-2.jpg 78KB
positive.5-2.jpg 77KB
20170004140033_75011771757501177175O04081702171711_Pr000_e[]三个pin焊点偏,右pin焊黑.jpg--49-2.jpg 77KB
positive.48-1.jpg 77KB
positive.48-2.jpg 77KB
positive.26-2.jpg 77KB
positive.38-2.jpg 77KB
36-2.jpg 77KB
positive.33-2.jpg 77KB
20174517144547_75011771767501177176O17021701876510_Pr000_e[]中pin、右pin焊点偏.jpg--34-2.jpg 77KB
16-2.jpg 77KB
positive.45-2.jpg 77KB
positive.8-2.jpg 76KB
positive.35-2.jpg 76KB
20173505203506_75011772137501177213O05081702174149_Pr000_e[]中pin、右pin焊点偏.jpg--44-3.jpg 76KB
25-3.jpg 76KB
positive.47-2.jpg 76KB
positive.16-2.jpg 76KB
20174531054515_75011772137501177213O31071702162453_Pr000_e[]中pin、右pin焊点偏.jpg--31-2.jpg 76KB
20171508001500_75011772137501177213O08081702177513_Pr000_e[]右pin焊点偏.jpg--45-2.jpg 76KB
20-2.jpg 76KB
20171903201947_75011772137501177213O03091702230289_Pr000_e[]中pin、右pin焊点偏.jpg--20-2.jpg 76KB
positive.26-1.jpg 76KB
20170911190956_75011772147501177214O11121702447708_Pr000_e[]三对pin焊点偏.jpg--11-3.jpg 76KB
20171508001500_75011772137501177213O08081702177513_Pr000_e[]右pin焊点偏.jpg--45-1.jpg 76KB
25-1.jpg 76KB
20173505203506_75011772137501177213O05081702174149_Pr000_e[]中pin、右pin焊点偏.jpg--44-1.jpg 76KB
20171508001500_75011772137501177213O08081702177513_Pr000_e[]右pin焊点偏.jpg--45-3.jpg 76KB
1-1.jpg 76KB
75011771757501177175O01121702427910_Pr000三对pin焊点偏.jpg--26-1.jpg 76KB
33-3.jpg 76KB
34-1.jpg 76KB
20172403202448_75011772137501177213O03091702230295_Pr000_e[]三对pin焊点偏.jpg--21-3.jpg 76KB
21-3.jpg 76KB
positive.34-2.jpg 76KB
20173906013953_75011772137501177213O06081702174731_Pr000_e[]右pin焊点偏.jpg--33-3.jpg 75KB
20173906013953_75011772137501177213O06081702174731_Pr000_e[]右pin焊点偏.jpg--33-1.jpg 75KB
33-1.jpg 75KB
positive.38-1.jpg 75KB
75011771767501177176O02081702167306_Pr000三对pin焊点偏.jpg--14-2.jpg 75KB
20175502135500_75011771767501177176O02081702167306_Pr000_e[]三对pin焊点偏.jpg--17-2.jpg 75KB
1-3.jpg 75KB
75011771757501177175O01121702427910_Pr000三对pin焊点偏.jpg--26-3.jpg 75KB
positive.17-2.jpg 75KB
20174911214954_75011772147501177214O11121702447965_Pr000_e[]中pin、右pin焊点偏.jpg--27-3.jpg 75KB
20173619233603_75011771177501177117O19021701881365_Pr000_e[]中pin、右pin焊点偏,右pin焊黑.jpg--35-1.jpg 75KB
75011771177501177117O19021701881365_Pr000中pin、右pin焊点偏,右pin焊黑.jpg--40-1.jpg 75KB
0-1.jpg 75KB
20173005213017_75011772137501177213O05081702174244_Pr000_e[]右pin焊点偏,右pin焊黑.jpg--38-2.jpg 75KB
39-2.jpg 75KB
31-3.jpg 75KB
19-1.jpg 74KB
positive.47-1.jpg 74KB
4-2.jpg 74KB
75011771757501177175O04081702172017_Pr000中pin、右pin焊点偏.jpg--36-2.jpg 74KB
20175004165004_75011771757501177175O04081702172017_Pr000_e[]中pin、右pin焊点偏.jpg--6-2.jpg 74KB
30-1.jpg 74KB
20170911190956_75011772147501177214O11121702447708_Pr000_e[]三对pin焊点偏.jpg--11-1.jpg 74KB
positive.10-2.jpg 74KB
75011771767501177176O02081702167306_Pr000三对pin焊点偏.jpg--14-1.jpg 74KB
20175502135500_75011771767501177176O02081702167306_Pr000_e[]三对pin焊点偏.jpg--17-1.jpg 74KB
positive.25-2.jpg 74KB
20170011180011_75011772147501177214O11121702447575_Pr000_e[]中pin、右pin焊点偏.jpg--48-3.jpg 74KB
positive.49-2.jpg 74KB
positive.27-2.jpg 74KB
positive.35-1.jpg 73KB
34-2.jpg 73KB
20171903201947_75011772137501177213O03091702230289_Pr000_e[]中pin、右pin焊点偏.jpg--20-1.jpg 73KB
20-1.jpg 73KB
20174531054515_75011772137501177213O31071702162453_Pr000_e[]中pin、右pin焊点偏.jpg--31-1.jpg 73KB
positive.40-2.jpg 73KB
20170004140033_75011771757501177175O04081702171711_Pr000_e[]三个pin焊点偏,右pin焊黑.jpg--49-3.jpg 73KB
positive.43-2.jpg 73KB
26-1.jpg 73KB
20173005213017_75011772137501177213O05081702174244_Pr000_e[]右pin焊点偏,右pin焊黑.jpg--38-1.jpg 73KB
28-2.jpg 73KB
共 421 条
- 1
- 2
- 3
- 4
- 5
资源评论
Make程序设计
- 粉丝: 6635
- 资源: 3571
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STC15单片机串口2使用程序例子
- 读取日志的excel生成周报 用python3开发weekplan-master.zip
- python 读取excel数据导入dbimport-data-master.zip
- K折交叉验证BP神经网络,多输入多输出BP神经网络(代码完整,数据齐全)
- B07训练原图.zip
- python-对Excel数据处理做可视化分析.zip
- 人工智能大作业-无人机图像目标检测的python源代码+文档说明.zip
- 基于GoogLeNet实现Cifar-10图像分类项目python源码(高分项目).zip
- 数据库 sql 面试题目及答案解析.docx
- 汽车常见 10 种传感器故障后的表现与解决措施.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功