Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误:(-215)计数>;=0&&;函数arcLength中的(深度==CV_32F | |深度==CV_32S)_Python_Opencv - Fatal编程技术网

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

Python 错误:(-215)计数>;=0&&;函数arcLength中的(深度==CV_32F | |深度==CV_32S),python,opencv,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.convexH

我正在使用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
回溯(最近一次呼叫最后一次):
文件“/home/decentmakeover2/lanedetect.py”,第6行,在
ε=0.01*cv2.弧长(img,真)
错误:/home/decentmakeover2/opencv-
3.2.0/modules/imgproc/src/shapedscr.cpp:285:错误:(-215)计数>=0&&
函数arcLength中的(深度==CV_32F | |深度==CV_32S)
我不知道该怎么改变,有什么想法吗

编辑:

回溯(最近一次呼叫最后一次):
文件“/home/decentmakeover2/lanedetect.py”,第8行,在
ε=0.01*cv2.弧长(img,真)
类型错误:不支持曲线数据类型=6
>>> 
(以及
approxPolyDP
convxhull
)需要作为输入

二维点的输入向量

而不是图像


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

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

cv2.error:OpenCV(4.2.0)C:\projects\OpenCV python\OpenCV\modules\imgproc\src\convhull.cpp:137:error:(-215:断言失败)函数“CV::convxhull”中的total>=0&(depth==cv32f | | depth==cv32s)


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

Python布尔or运算符是
,而不是
|
。但是我的代码中没有
,我是不是误用了什么?这里的错误是说
计数
=0
,这意味着
检查向量(2)
Mat上失败,或者数据类型不是32位浮点或int,这意味着它不是正确的位深度。您可以在此处检查源代码:。jpeg的颜色深度是多少?您需要将其转换为32位浮点/int,以便
arclength
能够happy@DanielRoseman该错误是从openCV在
c++
代码中抛出的,因此与op的问题无关。这里的问题是数组的形状和/或类型不正确。您必须将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
>>>