all_contours.append(contours[cnt]) TypeError: only integer scalar arrays can be converted to a scalar index
时间: 2023-12-25 16:46:27 浏览: 95
这个错误通常出现在使用非整数类型的变量作为数组索引时。请检查一下你的代码中,是否存在将非整数类型的变量作为数组索引的情况。
例如,如果你的代码是这样的:
```
x = 2.5
my_array = [1, 2, 3, 4, 5]
print(my_array[x])
```
你就会得到类似于“TypeError: only integer scalar arrays can be converted to a scalar index”的错误,因为 x 是一个浮点数,而不是整数。
要解决这个问题,你可以将非整数类型的变量转换为整数类型,或者通过其他方式来避免使用非整数类型的变量作为数组索引。
相关问题
area = cv2.contourArea(contours[i]) TypeError: only integer scalar arrays can be converted to a scalar index
这个错误通常是由于 `cv2.contourArea()` 函数的输入参数不正确导致的。函数 `cv2.contourArea()` 的输入参数应该是轮廓的索引,而不是轮廓本身。因此,你需要检查一下传递给函数的参数是否正确。
如果你已经将轮廓转换为整数类型,则可能会出现这个错误。你可以尝试将其转换为整数类型,如下所示:
```
area = cv2.contourArea(contours[i].astype('int'))
```
如果你仍然遇到这个错误,你可以尝试检查一下 contours[i] 的值是否存在问题。你可以使用 `print` 函数来查看 contours[i] 的值,并确保它是一个整数类型的数组。
terminate called after throwing an instance of 'cv::Exception' what(): OpenCV(4.5.0) /home/sniper/Downloads/opencv-4.5.0/modules/imgproc/src/contours.cpp:1799: error: (-215:Assertion failed) (_contours.kind() == _InputArray::STD_VECTOR_VECTOR || _contours.kind() == _InputArray::STD_VECTOR_MAT || _contours.kind() == _InputArray::STD_VECTOR_UMAT) in function 'findContours'
这是一个 OpenCV 的错误,通常是由于输入的轮廓参数不正确引起的。
在 OpenCV 中,`findContours()` 函数用于查找图像中的轮廓,它需要一个二值化的图像作为输入,以及一个用于存储轮廓的输出向量。
这个错误可能是由于传递给 `findContours()` 函数的轮廓参数类型不正确导致的。轮廓参数应该是一个类型为 `std::vector<std::vector<cv::Point>>` 的向量。
请检查你的代码,确保你正确地初始化了轮廓参数并将其传递给 `findContours()` 函数。如果问题仍然存在,请检查你的输入图像是否正确,或者尝试使用其他的轮廓检测方法。
阅读全文