霍夫圆检测 AttributeError: 'NoneType' 对象没有属性 'rint'

qua*_*dhd 5 python opencv numpy image image-processing

我试图在 open cv2 中使用 Houghcircle 检测这个圆,但出现错误。

在此输入图像描述

下面是我的代码

1

chh = cv2.HoughCircles(crr, cv2.HOUGH_GRADIENT, 1,minDist = 50, param1 =200, 
param2 = 18, minRadius = 20, maxRadius =60)
Run Code Online (Sandbox Code Playgroud)

[2]

ch = np.uint16(np.around(ch)) #error appears to come from here
Run Code Online (Sandbox Code Playgroud)

我假设1找到了圆圈,而 [2] 将其转换为数组,我怀疑np.around

一个解释将非常有价值。亲切的问候。

完整错误:

AttributeError Traceback (最近一次调用最后) C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in _wrapfunc(obj, method, *args, **kwds) 55 尝试: ---> 56返回 getattr(obj, 方法)(*args, **kwds) 57

AttributeError:“NoneType”对象没有属性“round”

在处理上述异常的过程中,又出现了一个异常:

AttributeError Traceback (最近一次调用最后一次) in ----> 1 ch = np.uint16(np.around(ch)) #error 似乎来自这里

C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ numpy \ core \ fromnumeric.py in around(a,小数,out)3005 3006“”” - > 3007返回_wrapfunc(a,'round',decimals =小数,出=出) 3008 3009

C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in _wrapfunc(obj, method, *args, **kwds) 64 # 像“pandas”这样的下游库。65 除了 (AttributeError, TypeError): ---> 66 return _wrapit(obj, method, *args, **kwds) 67 68

C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in _wrapit(obj, method, *args, **kwds) 44 except AttributeError: 45 wrap = None ---> 46 result = getattr (asarray(obj), method)(*args, **kwds) 47 如果换行: 48 如果不是 isinstance(结果, mu.ndarray):

AttributeError:“NoneType”对象没有属性“rint”

nat*_*ncy 3

这是一个使用以下命令执行圆检测的简单示例cv2.HoughCircles

import cv2
import numpy as np

# Load image, grayscale, Otsu's threshold
image = cv2.imread('1.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# Find circles with HoughCircles
circles = cv2.HoughCircles(thresh, cv2.HOUGH_GRADIENT, 1, minDist=150, param1=200, param2=18, minRadius=20)

# Draw circles
if circles is not None:
    circles = np.round(circles[0, :]).astype("int")
    for (x,y,r) in circles:
        cv2.circle(image, (x,y), r, (36,255,12), 3)

cv2.imshow('thresh', thresh)
cv2.imshow('image', image)
cv2.waitKey()
Run Code Online (Sandbox Code Playgroud)