我对图像处理还不熟悉,需要对这张图片进行角点检测:
在这张图片中,我需要提取每个线段的起点和终点或角点坐标。这只是我的项目中的一小部分,由于我没有图像处理的经验,所以卡住了。
我对图像处理还不熟悉,需要对这张图片进行角点检测:
在这张图片中,我需要提取每个线段的起点和终点或角点坐标。这只是我的项目中的一小部分,由于我没有图像处理的经验,所以卡住了。
这是一个使用scikit-image的解决方案:
from skimage import io, color, morphology
from scipy.signal import convolve2d
import numpy as np
import matplotlib.pyplot as plt
img = color.rgb2gray(io.imread('6EnOn.png'))
# Reduce all lines to one pixel thickness
snakes = morphology.skeletonize(img < 1)
# Find pixels with only one neighbor
corners = convolve2d(snakes, [[1, 1, 1],
[1, 0, 1],
[1, 1, 1]], mode='same') == 1
corners = corners & snakes
# Those are the start and end positions of the segments
y, x = np.where(corners)
plt.imshow(img, cmap=plt.cm.gray, interpolation='nearest')
plt.scatter(x, y)
plt.axis('off')
plt.show()
被接受的答案未能找到图像中的所有角落。
使用Harris角点检测,可以找到所有可能的角落。由于OP的模块选择没有受限制,所以我选择使用OpenCV库执行以下操作。
结果:
识别出图像中的每个角落。
此页面提供了算法和代码的详细信息。
我不确定我是否正确理解了问题,但我认为一种低效的方法是扫描每个像素并检查该像素周围的4个方向。如果有2个非相对方向(即上和左或上和右等)被着色,则它是一个角落。
希望这可以帮到你。