import cv2import numpy as np# 加载图像img = cv2.imread('image.jpg', 0)# 边缘检测edges = cv2.Canny(img, 100, 200)# 膨胀处理,使边缘更加明显kernel = np.ones((5, 5),np.uint8)edges = cv2.dilate(edges,kernel,iterations = 1)# 获取边缘点edge_points = np.argwhere(edges > 0)# 输出结果print(edge_points)继续写这段代码生成tsplib数据集
时间: 2023-06-17 14:08:45 浏览: 91
以下是继续写这段代码生成tsplib数据集的代码:
# 获取边缘点数量num_points = edge_points.shape[0]
# 生成节点列表nodes = []for i in range(num_points): nodes.append((edge_points[i][1], edge_points[i][0]))
# 创建距离矩阵dist_mat = np.zeros((num_points, num_points))for i in range(num_points): for j in range(num_points): if i == j: dist_mat[i][j] = 0 else: dist_mat[i][j] = np.sqrt((nodes[i][0]-nodes[j][0])**2 + (nodes[i][1]-nodes[j][1])**2)
# 保存为tsplib格式文件with open('dataset.tsp', 'w') as f: f.write('NAME: Edge Detection Dataset\n') f.write('TYPE: TSP\n') f.write(f'DIMENSION: {num_points}\n') f.write('EDGE_WEIGHT_TYPE: EUC_2D\n') f.write('NODE_COORD_SECTION\n') for i in range(num_points): f.write(f'{i+1} {nodes[i][0]} {nodes[i][1]}\n') f.write('EDGE_WEIGHT_SECTION\n') for i in range(num_points): for j in range(num_points): f.write(f'{dist_mat[i][j]} ') f.write('\n') f.write('EOF\n')
这段代码将生成一个名为 "dataset.tsp" 的文件,其中包含了边缘检测图像中的节点列表和距离矩阵。这个文件可以用于TSP问题的求解。
阅读全文