Python 3.x python3.x-TypeError:unhable-type:';numpy.ndarray和#x27;

Python 3.x python3.x-TypeError:unhable-type:';numpy.ndarray和#x27;,python-3.x,numpy,coordinates,numpy-ndarray,template-matching,Python 3.x,Numpy,Coordinates,Numpy Ndarray,Template Matching,我有一个代码: 模板={ “1.png”:0.7, “2.png”:0.7, “4.png”:0.7, } img_rgb=cv2.imread('mta-screen_2020-01-01_12-07-24.png')) img_速度=img_rgb[983:10001464:1510] cv2.imwrite('crapped.png',img\u速度) img\U速度\U灰色=cv2.CVT颜色(img\U速度,cv2.COLOR\U BGR2GRAY) toDetectSpeedFrom

我有一个代码

模板={
“1.png”:0.7,
“2.png”:0.7,
“4.png”:0.7,
}
img_rgb=cv2.imread('mta-screen_2020-01-01_12-07-24.png'))
img_速度=img_rgb[983:10001464:1510]
cv2.imwrite('crapped.png',img\u速度)
img\U速度\U灰色=cv2.CVT颜色(img\U速度,cv2.COLOR\U BGR2GRAY)
toDetectSpeedFrom={}
对于模板中的模板:
打印(模板,模板[模板])
路径='D:\!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Piton\MTA_pyautogui\TrainImgs'+chr(92)+模板
模板=cv2.imread(路径0)
w、 h=模板。形状[:-1]
res=cv2.matchTemplate(img\u速度\u灰色,模板,cv2.TM\u效果\u标准化)
阈值=0.7#浮动(模板[模板])
loc=纳米,其中(分辨率>=阈值)
对于邮政编码(*loc[:-1]):
打印(pt,(pt[0]+w,pt[1]+h))
toDetectSpeedFrom[template]=([pt,(pt[0]+w,pt[1]+h)])
cv2.矩形(惯性矩速度,角速度,(角速度[0]+w,角速度[1]+h),(0,0,255),1)
cv2.imwrite('res.png',img_速度)
打印(toDetectSpeedFrom)
我有一张图片可以从中检测模板(你可以在右下角看到速度):

我有这些模板

我的输出,其中包含错误

1.png 0.7
回溯(最近一次呼叫最后一次):
(5, 3) (13, 15)
文件“D:/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Piton/MTA_pyautogui/main.py”,第63行,在
toDetectSpeedFrom[template]=([pt,(pt[0]+w,pt[1]+h)])
TypeError:不可损坏的类型:“numpy.ndarray”
所以你可以看到当我打印时(pt,(pt[0]+w,pt[1]+h))它给出了
(5,3)(13,15)
。为什么我不能把它附加到字典里

预期词典:

toDetectSpeedFrom={
‘1.png’:[pt,(pt[0]+w,pt[1]+h],
...
}

我做错了什么?

您已经用
cv2
对象覆盖了
模板
变量

使用:


您已经用
cv2
对象覆盖了
模板
变量

使用:


在dict
中检测速度from
应使用哈希键。当您分配变量
template=cv2.imread(path,0)
时,结果可能不可散列。尝试将一些字符串或其他可哈希类型设置为键。例如:

toDetectSpeedFrom[path] = ([pt, (pt[0] + w, pt[1] + h)])

另请参见dict
中的以检测速度,您应该使用哈希键。当您分配变量
template=cv2.imread(path,0)
时,结果可能不可散列。尝试将一些字符串或其他可哈希类型设置为键。例如:

toDetectSpeedFrom[path] = ([pt, (pt[0] + w, pt[1] + h)])
另见