GroupRectangles Opencv无法正常工作

时间:2014-02-10 23:09:03

标签: python opencv crash tracking

您好我尝试使用简单的级联人检测,我想使用cv2.groupRectangles(),但每当我使用它时它会崩溃:

** OpenCV错误:断言失败(channels()== CV_MAT_CN(dtype))函数未知,文件...... \ src \ opencv \ modules \ core \ src \ copy.cpp,第212行

此应用程序已请求Runtime以不寻常的方式终止它。 请联系应用程序的支持团队以获取更多信息。 * *

我的代码:

    rects = cascade.detectMultiScale(img, scaleFactor=1.05, minNeighbors=3, minSize=(minSize, minSize), maxSize=( maxSize,  maxSize), flags=cv.CV_HAAR_DO_CANNY_PRUNING)
    #print rects
    rectList, weights = cv2.groupRectangles(rects, 1, 0.2)
    if len(rects) == 0:
            return []
    rects[:,2:] += rects[:,:2]
    return rects

在groupRectangles使用之前,一切正常。

2 个答案:

答案 0 :(得分:1)

您可以尝试将 rects numpy.array 转换为列表

    rectList, weights = cv2.groupRectangles(np.array(rects).tolist(), 1, 0.2)

这对我有用。

答案 1 :(得分:0)

简单的解决方案是确保每个rect中的所有值都是整数

对于视觉参考,列表应格式为:

[[int, int, int, int], [int ,int ,int ,int], ...]

据我所知,每种类型的整数都应该有效,但在我的情况下,numpy喜欢转换为int32,它工作正常,但int16可能最好节省空间 - 你决定你需要什么......

int16整数(-32768到32767)

int32整数(-2147483648至2147483647)

int64整数(-9223372036854775808至9223372036854775807)

https://docs.scipy.org/doc/numpy/user/basics.types.html