gpt4 book ai didi

python - OpenCV-检测圆形

转载 作者:行者123 更新时间:2023-12-02 16:49:30 26 4
gpt4 key购买 nike

我有一些代码可以检测圆形,但是我无法理解它是如何工作的。

从此代码:

  • 如何找到圆的半径和中心点?
  • “cv2.approxPolyDP”检测圆的行为是什么?

  • 现在在分段蒙版中找到轮廓
    contours, hierarchy = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

    对轮廓进行排序,其中轮廓轮廓为X
    contours.sort(key = lambda x:cv2.boundingRect(x)[0])

    for contour in contours:
    approx = cv2.approxPolyDP(contour, 0.01*cv2.arcLength(contour,True), True)
    if len(approx) > 8:
    # Find the bounding rect of contour.
    contour_bounding_rect = cv2.boundingRect(contour)
    mid_point = contour_bounding_rect[0] + contour_bounding_rect[2]/2, contour_bounding_rect[1] + contour_bounding_rect[3]/2
    print mid_point[1]/single_element_height, ", ",

    最佳答案

    因此,我已经找到了您第一个问题的答案:确定图像中圆的中心和半径。

    最初,我发现图像中存在所有轮廓。然后使用for loop,使用cv2.minEnclosingCircle为图像中的每个轮廓找到中心半径。我在控制台屏幕上打印了它们。

    contours,hierarchy = cv2.findContours(thresh,2,1)
    print len(contours)
    cnt = contours

    for i in range (len(cnt)):
    (x,y),radius = cv2.minEnclosingCircle(cnt[i])
    center = (int(x),int(y))
    radius = int(radius)
    cv2.circle(img,center,radius,(0,255,0),2)
    print 'Circle' + str(i) + ': Center =' + str(center) + 'Radius =' + str(radius)

    回答关于 cv2.approxPolyDP()的第二个问题;此函数基于称为“ε”的参数在图像中的对象周围绘制近似轮廓。 “ε”的值越高,轮廓就越近似。对于 epsilon较低的值,轮廓将掠过图像中对象几乎所有的边缘。访问 THIS PAGE以获得更好的理解。

    希望这有所帮助! :)

    关于python - OpenCV-检测圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41561731/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com