如何使用 OpenCV 在 Python 中查找点?

How to find dots with OpenCV in Python?

我刚开始接触 OpenCV,所以这个问题更像是“你如何称呼 OpenCV 中的东西……”而不是“你是怎么做到的……”——如果我知道的话寻找通常的文档和更多的谷歌搜索会有很长的路要走。

所以:在 Python 中使用 OpenCV 如何找到红色和灰色之间边界处所有黑点的位置?

如果可以判断边框是水平的还是垂直的,或者它在该点的角度,那就太好了。

换句话说 - 白色边框内的点的位置,而不是灰色区域中的点的位置:

一些设置:

im = cv.imread("4V56c.png")
hsv = cv.cvtColor(im, cv.COLOR_BGR2HSV)

点数:

# axis=2 is the color dimension. all values must be at most 30.
# result is a boolean array (0 or 1). times 255 because of reasons.
dots = (im <= 30).all(axis=2) * np.uint8(255)

边框:

# a certain saturation
mask = (hsv[:,:,1] >= 50) * np.uint8(255)
# erase all the gray stuff
mask = cv.morphologyEx(src=mask, op=cv.MORPH_CLOSE, kernel=None, iterations=5)
# blow up and shrink
dilated = cv.dilate(mask, kernel=None, iterations=5)
eroded = cv.erode(mask, kernel=None, iterations=5)
# difference
border = dilated & ~eroded

合并:

dots & border