错误:( - 215)计数> = 0&&函数arcLength中的(depth == CV_32F || depth == CV_32S)

时间:2017-10-20 13:03:03

标签: python opencv

我正在使用python 2.7

当我尝试对其运行epsilon操作时,我收到此错误, 这是我的代码

import cv2
import numpy as np

img = cv2.imread('img.jpeg')
img = cv2.convertScaleAbs(img)
epsilon = 0.01 * cv2.arcLength(img, True)
approx  = cv2.approxPolyDP(img, epsilon, True)
hull = cv2.convexHull(img)

这是错误,

Traceback (most recent call last):
  File "/home/decentmakeover2/lanedetect.py", line 6, in <module>
    epsilon = 0.01 * cv2.arcLength(img, True)
error: /home/decentmakeover2/opencv-
3.2.0/modules/imgproc/src/shapedescr.cpp:285: error: (-215) count >= 0 && 
(depth == CV_32F || depth == CV_32S) in function arcLength

我不知道这里有什么改变,有什么想法吗?

编辑:

Traceback (most recent call last):
  File "/home/decentmakeover2/lanedetect.py", line 8, in <module>
    epsilon = 0.01 * cv2.arcLength(img,True)
TypeError: curve data type = 6 is not supported
>>> 

enter image description here

2 个答案:

答案 0 :(得分:1)

arcLength(以及public string FunctionHandler(ILambdaContext context) { context.Logger.LogLine("Entering function"); try { var driver = new InternetExplorerDriver(); context.Logger.LogLine("Navigating to URL"); driver.Navigate().GoToUrl("http://www.google.com/"); context.Logger.LogLine("Returning Done"); return "Done"; } catch (Exception e) { context.Logger.LogLine("Oops: " + e); return "Failed"; } } approxPolyDP)需要输入

  

2D点的输入矢量

而不是图像。

所有这些功能都适用于点,计算弧的长度(或多边形近似)是没有意义的凸包)用于图像。

答案 1 :(得分:1)

当我尝试生成2D点组的凸包时,我也遇到了此错误。 错误消息如下所示:

cv2.error:OpenCV(4.2.0)C:\ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ convhull.cpp:137:错误:(-215:断言失败)总计> = 0 &&(深度== CV_32F ||深度== CV_32S)在函数'cv :: convexHull'

原来的原因是我的输入点是浮点数而不是整数。因此,我使用 numpy.astype(np.int)更改输入点的数据类型。