我有一个很大的二进制jpg文件。这个想法是提取一小部分并找到形状。稍后,我要制作形状的形状文件。我采取的步骤: 1.加载图像并裁剪 2.图像模糊 3.骨架化图像 4.提取骨架图像的坐标非零值 5.进行一些插值(代码中未显示) 6.转换坐标(我刚刚添加了差异),使其具有与大图像内原来的坐标相同(裁剪之前) 7.从相同大小的原始jpg的tiff文件中提取地理参考数据。将它们绑定到我们的形状并创建形状文件。 我的最终形状文件产品似乎被翻转了。因此,我在整个编码过程中都进行了检查,提取坐标后图像的方向似乎发生了变化。当我使用imshow显示矩阵时,方向都很好。当我使用散点图显示点的坐标时,方向是关闭的。
ds = gdal.Open(‘path_to/binary.jpg')
image = ds.ReadAsArray()
image_crop = image[28500:30000,25500:28000]
def blur(image,resblur):
blur = cv2.blur(image,(resblur,resblur))
blur = (blur-np.min(blur))/(np.max(blur)-np.min(blur))
blur[blur<=np.mean(blur)] = 0
blur[blur!=0]=1
return blur
blur = blur(image_crop,50)
plt.imshow(blur)
def skel_coordinates(blur):
skel = skeletonize(blur)
skel = np.uint8(skel)
y,x = np.nonzero(skel)
coords = np.transpose(np.vstack([x, y]))
return skel, coords
skel,coords = skel_coordinates(blur)
plt.imshow(skel)
plt.imshow(coord[:,0],coord[:,1])
x = x + 25500
y = y + 28500