OpenCV:错误:函数阈值(-210)

时间:2019-02-12 14:05:05

标签: python numpy opencv

我正在尝试估算基于简单numpy数组的图像的边界框

ret,thresh = cv.threshold(img1[:,:,244],10,255,0)

输出看起来像这样:

The thresholded image

接下来我要做的

im2,contours,hierarchy = cv.findContours(thresh, 1, 2)

我遇到错误

FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function cvStartFindContours_Impl

所以我转换为

im2,contours,hierarchy = cv.findContours(thresh.astype(np.int8), 1, 2)

现在我得到了错误

error: (-210)  in function threshold

如何解决该错误?他们的替代品是我该如何获得示例的倾斜边界框?

转换为np.uint8之前的数组:

array([[0., 0., 0., ..., 0., 0., 0.],
   [0., 0., 0., ..., 0., 0., 0.],
   [0., 0., 0., ..., 0., 0., 0.],
   ...,
   [0., 0., 0., ..., 0., 0., 0.],
   [0., 0., 0., ..., 0., 0., 0.],
   [0., 0., 0., ..., 0., 0., 0.]])

转换后的数组:

array([[0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   ...,
   [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0]], dtype=int8)

1 个答案:

答案 0 :(得分:2)

转换:

thresh = np.array([255, 0])
thresh.astype(np.int8) #array([-1,  0], dtype=int8)

由于溢出而给您一个错误的答案。

您应该使用:

thresh.astype(np.uint8) #array([255,   0], dtype=uint8)

以使结果正确。