def get_map(self): ''' 该函数需要从类中获取self.big_map。然后,它将指定一个边界框,以便在这个边界框内创建一个新的地图。 这个边界框的值是x1、x2、y1和y2。一开始,这些值都被设置为0和8191。然后,使用while循环来找到x1、y1、x2和y2的正确值。 这些值是从大地图中找到的,直到找到第一条非零行或列。如果找不到任何非零行或列,则返回空。 接下来,使用深度拷贝函数(deepcopy)来将大地图中边界框内的值复制到新的地图中。 然后,将新地图中所有大于或等于100的像素设置为255,将所有小于100的像素设置为0。 接下来,使用另一个循环来检查每个像素周围的像素是否为255。如果周围有255像素,则将该像素设置为255。 最后,将新地图保存为图像文件并返回。 :return: ''' x1, x2, y1, y2 = 0, 8191, 0, 8191 # 初始化边界框的值 # self.big_map[4090:4097+5,4090:4097+5]=255 while x1 < 8192 and np.sum(self.big_map[x1, :]) == 0: # 找到第一条非零行 x1 += 1 while y1 < 8192 and np.sum(self.big_map[:, y1]) == 0: # 找到第一条非零列 y1 += 1 while x2 > 0 and np.sum(self.big_map[x2, :]) == 0: # 找到最后一条非零行 x2 -= 1 while y2 > 0 and np.sum(self.big_map[:, y2]) == 0: # 找到最后一条非零列 y2 -= 1 if x1 >= x2 or y1 >= y2: # 如果找不到任何非零行或列,则返回空 return tp = deepcopy(self.big_map[x1 - 1:x2 + 2, y1 - 1:y2 + 2]) # 深度拷贝大地图中边界框内的值,并创建新地图 tp[tp >= 100] = 255 # 将新地图中所有大于或等于100的像素设置为255 bk = deepcopy(tp) # 创建备份 for i in range(tp.shape[0]): # 遍历新地图中的每个像素 for j in range(tp.shape[1]): f = 0 for ii in range(0, 1): # 检查每个像素周围的像素是否为255 for jj in range(0, 1): if i + ii >= 0 and j + jj >= 0 and i + ii < tp.shape[0] and j + jj < tp.shape[1]: if bk[i + ii, j + jj] == 255: f = 1 break if f: # 如果周围有255像素,则将该像素设置为255 tp[i, j] = 255 tp[tp < 100] = 0 # 将新地图中所有小于100的像素设置为0 cv.imwrite(self.map_file + 'map_' + str(x1 - 1) + '' + str(y1 - 1) + '.jpg', tp) # 将新地图保存为图像文件 cv.imwrite(self.map_file + 'target.jpg', tp

def get_mapself 该函数需要从类中获取selfbig_map。然后它将指定一个边界框以便在这个边界框内创建一个新的地图。 这个边界框的值是x1、x2、y1和y2。一开始这些值都被设置为0和8191。然后使用while循环来找到x1、y1、x2和y2的正确值。 这些值是从大地图中找到的直到找到第一条非零行或列。如果找不到任何非零

原文地址: https://www.cveoy.top/t/topic/fGeQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录