我正在尝试估算基于简单numpy数组的图像的边界框
ret,thresh = cv.threshold(img1[:,:,244],10,255,0)
输出看起来像这样:
接下来我要做的
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)
答案 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)
以使结果正确。