posBag = it.getPosBag(X, Y, lenth, width) #正包 lables = list(np.ones(len(posBag))) #正包标签 negBag = it.getNegBag(X, Y, lenth, width, 2, 4) #负包 lables.extend(np.zeros(len(negBag))) #整个标签 #负包并不是以整个图片出现的,而是以同一个块的组合出现,使每个块都学习到相同的 offsetInfo = [] #这个是块偏移信息,放外面 #print(allInstance) blocksInfos = [] blockClassifier = [] # 每个块已训练好的的强分类器(adaboost分类器) for instance in posBag: #对于每个正示例分块并存储。这个循环只能干这么点事。 # 分块,第一帧就用target了,没用targetPosition[-1] blocksInfo, offsetInfo = it.imageFrag(instance['x'], instance['y'], instance['lenth'], instance['width'], 2, 4) #blocksInfo记录块的起始位置xy以及块的长宽。offsetInfo记录块相对于图像的偏移信息 blocksInfos.append(blocksInfo) #所有示例的偏移信息是一样的,不需要在添加一个列表 for i in range(len(negBag)): #负示例分块,每个示例八个块,每个块内容是一模一样 blocksInfo = [] for j in range(8): blocksInfo.append(negBag[i]) blocksInfos.append(blocksInfo) #**********************测试********************* ''' tems=[] blocksInfoTem, offsetInfoTem = it.imageFrag( targetPosition[-1]['x'], targetPosition[-1]['y'], targetPosition[-1]['lenth'], targetPosition[-1]['width'], 2, 4)
blocksInfos = [] # 维护示例的分块信息,每帧需要重置。第一维是示例,第二维是块 imaMat = it.image2Mat(imagePath+'/'+image,color) #图像转矩阵 inteIma = it.getInteIma(imaMat) #积分图 if image == '0001.jpg': #第一帧只学习,不分类,单独拿出来 originIndex = 0 posBag = it.getPosBag(X,Y,lenth,width) #正包 lables =list(np.ones(len(posBag))) #正包标签 negBag = it.getNegBag(X,Y,lenth,width,2,4) #负包 lables.extend(np.zeros(len(negBag))) #整个标签 #上面两个都是二位列表,blocksInfos[0][0][x]是第一个示例的第一个块的起始坐标的x值 for instance in posBag: #对于每个正示例分块并存储。这个循环只能干这么点事 # 分块,第一帧就用target了,没用targetPosition[-1] blocksInfo, offsetInfo = it.imageFrag( instance['x'], instance['y'], instance['lenth'], instance['width'], 2, 4) #blocksInfo记录块的起始位置xy以及块的长宽。offsetInfo记录块相对于图像的偏移信息 blocksInfos.append(blocksInfo) for i in range(len(negBag)): #负示例分块,每个示例八个块,每个块内容是一模一样 blocksInfo = [] for j in range(8): blocksInfo.append(negBag[i]) blocksInfos.append(blocksInfo) #循环结束,数据准备结束,下面开始学习 randomFerns,dataMats,features = lt.randomFern(inteIma,blocksInfos,lables,numFeat,numFern) #所有块都拿去学习建蕨,但只有4个块用来检测。numFeat是每块选择的特征数量,暂没定是多少 #dataMats第一维是蕨,第二维是块,第三维是示例,第四维是每个蕨的特征值序列 #randomFerns第一维是建立的数个蕨,第二维是每个块。 #numFeat是每块选择的特征数量(一个随机蕨多少个特征),暂没定是多少