OpenCV格式knnMatch描述符

时间:2018-08-09 20:18:15

标签: python arrays opencv format computer-vision

我正在使用OpenCV 2.4.9 Python knnMatch,其中查询描述符直接来自detectAndCompute并被正确格式化,但是训练描述符将来自我在另一个程序中创建的列表。

当我从其他程序获得描述符时,它们看起来像:

[array([ 14,  21, 234, 147, 215, 115, 190, 215,  94, 231,  31,  34, 200,
       124, 127, 104, 255, 123, 179, 147, 180, 240,  61, 226, 111,  95,
       159, 131, 151, 127, 253, 231], dtype=uint8), array([162, 150, 101, 219, 117, 151, 173, 113,  93,  29,  81,  23, 232,
        13,  60, 133, 221,   2, 147, 165, 242, 188, 120, 221,  39,  26,
       154, 194,  87, 140, 245, 252], dtype=uint8)]

那将是2个描述符。

我如何格式化这些描述符,以便在将这些描述符与来自detectAndCompute的描述符进行匹配时,不会出现“ OpenCV错误:不支持的格式或格式组合”错误?我试过使用np.asarray(list,np.float32)无济于事。如果我这样做:

[[d中的d中的d,des中的d中的d]列表中的列表作为火车描述符,那么两个列表看起来相同,但我得到相同的错误!

1 个答案:

答案 0 :(得分:0)

list = [[d for d in des] for des in list]
list = np.asarray(list, np.uint8)
for d in list:
    for x in d:
        x = x.astype(np.uint8)