我正在使用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]列表中的列表作为火车描述符,那么两个列表看起来相同,但我得到相同的错误!
答案 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)