def get_grasp(self,idx,rot = 0,zoom=1.0): grs = Grasps.load_from_jacquard_files(self.graspf[idx],scale = self.output_size/1024.0)#因为图像每个都resize了,所以这里每个抓取框都要缩放 c = self.output_size//2 grs.rotate(rot,(c,c)) grs.zoom(zoom,(c,c)) pos_img,angle_img,width_img = grs.generate_img(self.output_size,self.output_size) return pos_img,angle_img,width_img
def get_grasp(self,idx,rot = 0,zoom=1.0): grs = Grasps.load_from_jacquard_files(self.graspf[idx],scale = self.output_size/1024.0)#因为图像每个都resize了,所以这里每个抓取框都要缩放 c = self.output_size//2 grs.rotate(rot,(c,c)) grs.zoom(zoom,(c,c)) pos_img,angle_img,width_img = grs.generate_img(self.output_size,self.output_size) # poto_data = (pos_grid_img,gt_points, gt_angles, gt_widths,gt_lengths) poto_data = grs.generate_grid_mask(shape = (self.output_size,self.output_size)) return pos_img,angle_img,width_img,poto_data
def get_raw_grasps(self,idx,rot = 0,zoom = 1.0): ''' :功能 :读取返回指定id的抓取框信息斌进行一系列预处理(裁剪,缩放等)后以Grasps对象的形式返回 :参数 idx :int,要读取的数据id :返回 :Grasps,此id中包含的抓取 ''' raw_grasps = Grasps.load_from_jacquard_files(self.graspf[idx],scale = self.output_size/1024.0) c = self.output_size//2 raw_grasps.rotate(rot,(c,c)) raw_grasps.zoom(zoom,(c,c)) return raw_grasps
def check_typical(self, idx, rot, zoom): grs = Grasps.load_from_jacquard_files( self.graspf[idx], scale=self.output_size / 1024.0) #因为图像每个都resize了,所以这里每个抓取框都要缩放 c = self.output_size // 2 grs.rotate(rot, (c, c)) grs.zoom(zoom, (c, c)) # 下面是新加的代码,用于测试典型学习的内容 angles = [round(gr.angle, 1) for gr in grs.grs] angle_dict = dict(Counter(angles)) list1, list2 = (list(t) for t in zip( *sorted(zip(angle_dict.values(), angle_dict.keys())))) first = list1[-1] if len(list1) > 1: second = list1[-2] total = first + second else: total = first percent = (total) / len(grs.grs) if percent > 0.70: # 生成样例学习 angle_shift = 0.2 typical1_min = list2[-1] - angle_shift typical1_max = list2[-1] + angle_shift if len(list1) > 1: typical2_min = list2[-2] - angle_shift typical2_max = list2[-2] + angle_shift else: typical2_min = 0 typical2_max = 0 grs1 = [] grs2 = [] grs3 = [] for gr in grs.grs[::]: if gr.angle < typical1_max and gr.angle > typical1_min: grs1.append(gr) elif gr.angle < typical2_max and gr.angle > typical2_min: grs2.append(gr) else: grs3.append(gr) grasp_true1 = Grasps(grs1) # grasp_true2 = Grasps(grs2) # grasp_true3 = Grasps(grs3) return percent, grasp_true1 return percent, Grasps(grs)
def get_grasp(self, idx, rot=0, zoom=1.0): grs = Grasps.load_from_jacquard_files( self.graspf[idx], scale=self.output_size / 1024.0) #因为图像每个都resize了,所以这里每个抓取框都要缩放 c = self.output_size // 2 grs.rotate(rot, (c, c)) grs.zoom(zoom, (c, c)) # 下面是新加的代码,用于测试典型学习的内容 percent, grasp_true1 = self.check_typical(idx, rot, zoom) if percent > 0.70: pos_img, angle_img, width_img = grasp_true1.generate_img_n( self.output_size, self.output_size) else: # 不是的话啥都不用做 pos_img, angle_img, width_img = grs.generate_img( self.output_size, self.output_size) return pos_img, angle_img, width_img