【问题标题】:corner detection in complex image复杂图像中的角点检测
【发布时间】:2017-10-31 17:32:06
【问题描述】:

我想在上面的图片中找到一个固定点进行后期比较,我想占据棋盘的左上角。我尝试了一些东西,但结果显示为绿点。我想找到一种方法把那个点放在棋盘的角落,而不是上面。我还想在同一块板的一组图片中说明这一点,但方向可能会有所变化。我正在使用 python 2.7

到目前为止我尝试过的代码:

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
edged = cv2.Canny(blurred, 10, 200)
edged = cv2.dilate(edged, None, iterations=6)
edged = cv2.erode(edged, None, iterations=6)
(contourss, _) = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL,
                        cv2.CHAIN_APPROX_SIMPLE)
contourss = sorted(contourss, key=cv2.contourArea, reverse=True)[:10]
cv2.drawContours(image, contourss[0], -1, (0, 255, 0), 2)

rect1 = cv2.minAreaRect(contourss[0])
box1 = cv2.cv.BoxPoints(rect1)
box1 = np.int0(box1)
topleftPer=[]
for i in box1[1]:
    topleftPer.append(i)
pt = (topleftPer[0], topleftPer[1])
cv2.circle(image, pt, 5, (0, 255, 0), -1)

【问题讨论】:

  • 那个角的定义很差,因为它实际上是一条曲线。你应该给出更好的标准。

标签: python-2.7 opencv computer-vision opencv-contour corner-detection


【解决方案1】:

看到人们希望如何依赖边缘检测总是令人惊讶。边缘检测太不可靠了!

这张图片很容易二值化。找到 x+y 值最小的黑色像素,并在该像素周围放置一个小的 ROI。然后使用最左边和最上面的坐标。

【讨论】:

  • 能否提供一些代码,因为我是 python 新手?
  • @EugeneMoush:哈哈,那是手工制作的。
  • @EugeneMoush:但在编程中完全实现这一点是没有问题的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 2018-07-07
  • 1970-01-01
相关资源
最近更新 更多