import os
import pickle
import cv2
from colorama import Fore
import numpy as np
import Core.pose as pose
posImagePath = 'Data/Train/Image/Pos/'
negImagePath = 'Data/Train/Image/Neg/'
resultsPath = 'Data/Train/Processed/'
posDatas = []
negDatas = []
def gamma_trans(img,gamma):
gamma_table = [np.power(x/255.0,gamma)*255.0 for x in range(256)]
gamma_table = np.round(np.array(gamma_table)).astype(np.uint8)
return cv2.LUT(img,gamma_table)
def processImage(img):
# cv2.imwrite('Data/Processed' + str(len(posDatas) + len(negDatas)) + '.jpg', img)
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
poseData = pose.getPosePoints(imgRGB)
if poseData:
poseData = [poseData[0]] + poseData[11:16]
'''xyMin, xyMax = 100000,- 1
zMin, zMax = 100000,- 1
for pointData in poseData:
for i, pointValue in enumerate(pointData):
if i in (0, 1):
xyMax = max(xyMax, pointValue)
xyMin = min(xyMin, pointValue)
else:
zMax = max(zMax, pointValue)
zMin = min(zMin, pointValue)
for pointData in poseData:
for i, pointValue in enumerate(pointData):
if i in (0, 1):
pointData[i] = (pointData[i] - xyMin) / (xyMax - xyMin)
else:
pointData[i] = (pointData[i] - zMin) / (zMax - zMin)'''
'''minValues, maxValues = [100000] * 3, [-1] * 3
for pointData in poseData:
for i, pointValue in enumerate(pointData):
minValues[i] = min(minValues[i], pointValue)
maxValues[i] = max(maxValues[i], pointValue)
for pointData in poseData:
for i, pointValue in enumerate(pointData):
pointData[i] = (pointData[i] - minValues[i%3]) / (maxValues[i%3] - minValues[i%3])'''
return poseData
else:
print('Error')
return None
def process_(img, dataList):
data = processImage(img)
if data:
dataList.append(data)
img_ = cv2.flip(img, 1)
data = processImage(img_)
if data:
dataList.append(data)
img_ = gamma_trans(img, 1.2)
data = processImage(img_)
if data:
dataList.append(data)
img_ = gamma_trans(img, 0.8)
data = processImage(img_)
if data:
dataList.append(data)
def process():
print(Fore.RED + '加载并处理训练数据中...')
print(Fore.RESET, end='')
for path in os.listdir(posImagePath):
img = cv2.imread(os.path.join(posImagePath, path))
process_(img, posDatas)
for path in os.listdir(negImagePath):
img = cv2.imread(os.path.join(negImagePath, path))
process_(img, negDatas)
print(Fore.CYAN + '加载并处理完毕')
print(Fore.RESET)
print(f'Pos data length: {len(posDatas)}')
print(f'Pos data size: {len(posDatas)} * {len(posDatas[0])} * {len(posDatas[0][0])}')
print('图片数量 * 关键点数量 * 关键点坐标维度')
print()
print(f'Neg data length: {len(negDatas)}')
print(f'Neg data size: {len(negDatas)} * {len(negDatas[0])} * {len(negDatas[0][0])}')
print('图片数量 * 关键点数量 * 关键点坐标维度')
print(Fore.RESET, end='')
pickle.dump(posDatas, open(os.path.join(resultsPath, 'posData.data'), 'wb'))
pickle.dump(negDatas, open(os.path.join(resultsPath, 'negData.data'), 'wb'))
龙年行大运
- 粉丝: 1386
- 资源: 3960
最新资源
- libmx-1.4.7-10.el7.x64-86.rpm.tar.gz
- libmx-devel-1.4.7-10.el7.x64-86.rpm.tar.gz
- libmx-docs-1.4.7-10.el7.x64-86.rpm.tar.gz
- 遗传算法优化SVM参数C与核函数G:直观上手,Windows系统专用,质量保障,完美运行博士研究实践,遗传算法GA优化SVM支持向量机惩罚参数c和核函数g 有例子,易上手,简单粗暴 仅适应于win
- libndp-1.2-9.el7.x64-86.rpm.tar.gz
- 西门子S7-1200PLC编程实践:从触摸屏到伺服控制,FB块与DB块结构化编程应用于机械手等设备控制,西门子S7-1200PLC程序, 1)触摸屏是西门子Tp900, 2)3轴伺服PTO,脉冲加方向
- 欧姆龙PLC EtherCat总线控制多伺服轴电池生产线自动化程序,集成触摸屏与远程IO终端,详细注释与工艺介绍 ,欧姆龙 PLC 程序NJ ST语言EtherCat总线控制24个伺服轴大型程序电池生
- 西门子PLC与Fanuc机器人协同工作:基于SCL算法的大型程序、Profinet通讯与智能模块应用,SCL+顺控+梯形图西门子1500大型程序西门子PLC汽车行业A-SICR标准fanuc机器人远程
- 西门子Smart200与欧姆龙E5EC的Modbus通讯:SV温度设定与PV读取、功能切换及运行状态监控,西门子smart200 modbus方式通讯欧姆龙E5EC示例 硬件:smart200,欧姆
- 信捷PLC与触摸屏控制的折弯机、弯管机与铝型材卷圆机程序解决方案,折弯机,弯管机,铝型材卷圆机程序,使用信捷PLC和信捷触摸屏,只是程序,只是程序,只是程序,重要的事情说三遍 ,核心关键词:折弯机;
- 欧姆龙PLC NJ系列EtherCat总线控制大规模伺服轴电池生产线自动化程序:EtherCat总线整合与触摸屏应用 ,欧姆龙PLC NJ系列ST语言EtherCat总线控制24个伺服轴大型程序电池生
- 力士乐变频器调试软件RDwin11V09英文版功能详解,力士乐变频器调试软件RDwin11V09,只有英文版的 ,核心关键词:力士乐变频器;调试软件;RDwin11V09;英文版;调试 ,力士乐RDw
- 基于灰狼优化算法的SVM参数自动调整工具:轻松上手解决分类问题,快速调整惩罚参数c和核函数参数g,灰狼优化算法GWO优化SVM支持向量机惩罚参数c和核函数参数g,有例子,易上手,简单粗暴,替数据即可
- 立体库机器人码垛机伺服视觉程序集:PLC与多方通讯、混编梯形图及SCL语言实践,涵盖丰富知识点 ,带相机PLC1200 SCL梯形图混编立体库机器人码垛机伺服视觉程序 包括2台西门子PLC1215程序
- libnet-1.1.6-7.el7.x64-86.rpm.tar.gz
- 【标准内容提示】非标自动化利器:涵盖注塑、组装等应用,全面呈现高精度机械手三维模型,总计二十八套可用SW软件开启的神秘设备工具包!,共28套机械手三维模型,sw打开,主要用于注塑机,组 装,冲压,搬运
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈