cv2.fitEllipse()错误。 (-215)n> = 0 &&(深度== CV_32F ||深度== CV_32S)

时间:2020-05-22 14:47:20

标签: python cv2

我目前正在使用cv2进行一个项目,以检测图像中的不同形状。事实是,我正在计算机上工作,但一切都很好,但是我不得不切换到另一个(都使用Ubuntu 18.04),现在我遇到了一个错误,我不知道如何调试。

基本上,我现在拥有的代码是:

# filter in the image
bw = np.logical_and(img[:, :, 0] >= 230, img[:, :, 1]
                            < 20, img[:, :, 2] < 20).astype(np.uint8) * 255
contours = cv2.findContours(bw, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)

# Some unrelated code and I check that a contour was found!!
contour = contours[0]

(x, y), axis, angle = cv2.fitEllipse(contour)

正如我所说,在执行最后一行代码时,出现以下错误:

OpenCV Error: Assertion failed (n >= 0 && (depth == CV_32F || depth == CV_32S)) in fitEllipse, file /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/imgproc/src/shapedescr.cpp, line 353
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.6/tkinter/__init__.py", line 1705, in __call__
    return self.func(*args)
  File "/home/robotica/pyrobot/gui/TK.py", line 243, in loadBrain
    gui.loadBrain(self)
  File "/home/robotica/pyrobot/gui/__init__.py", line 513, in loadBrain
    self.engine.loadBrain(f)
  File "/home/robotica/pyrobot/engine/__init__.py", line 232, in loadBrain
    self.brain = system.loadINIT(file, self)
  File "/home/robotica/pyrobot/system/__init__.py", line 110, in loadINIT
    retval = newMod.INIT(engine)
  File "/home/robotica/src/BrainFinal.py", line 808, in INIT
    return BrainFinal('BrainFinal', engine)
  File "/home/robotica/pyrobot/brain/__init__.py", line 69, in __init__
    self.setup(**kwargs)
  File "/home/robotica/src/BrainFinal.py", line 741, in setup
    self.shape_model = TrainShape().train()
  File "/home/robotica/src/BrainFinal.py", line 83, in train
    return KneighboursClassifier().fit(img_raw_list, labels)
  File "/home/robotica/src/BrainFinal.py", line 89, in fit
    X.append(self.contour2des(img_raw, self.img2contour(img_raw)))
  File "/home/robotica/src/BrainFinal.py", line 127, in contour2des
    (x, y), axis, angle = cv2.fitEllipse(contour)
cv2.error: /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/imgproc/src/shapedescr.cpp:353: error: (-215) n >= 0 && (depth == CV_32F || depth == CV_32S) in function fitEllipse

我正在使用ROS和pyrobot来处理其他内容,但问题不在于此(据我所知)。抱歉,我无法提供更多信息,但我真的迷失了,任何帮助都会很棒!预先感谢。

(如果我看到变量轮廓的值,它是一个包含0和255的矩阵)

我已经看到其他人对同一个问题有疑问,并且基本上所有这些问题都是由findContours()函数返回的值的顺序问题。如果我这样说:

contours, _ = cv2.findContours(bw, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)

我得到:

ValueError: too many values to unpack (expected 2)

0 个答案:

没有答案