【发布时间】:2016-05-08 15:30:25
【问题描述】:
好的,这是我的代码
from PIL import Image
import cv2
import numpy
cam = cv2.VideoCapture(0)
s, im = cam.read() # captures image
pixels=tuple(numpy.asarray(im))
pixel=set(pixels)
colour=set([0, 51, 14],[0, 51, 15],[0, 51, 16],etc
pixel.symmetric difference(colour)
我希望能够将所拍摄图像的像素与我存储的像素列表进行对称差异(从两个列表/集合中获取所有相似的数字)。
我也知道我的颜色设置方法很垃圾/可能是错误的,但我一次只做一件事。
无论如何,我一直在尝试将像素/像素转换为列表或集合,但这不断出现
Traceback (most recent call last):
File "C:\Users\Dave\Desktop\Listo.py", line 9, in <module>
pixel=set(pixels)
TypeError: unhashable type: 'numpy.ndarray'
就像,是的。我做错了什么?
【问题讨论】:
-
asarray似乎是多余的,它已经是一个 numpy 数组。您是否尝试先将其转换为Python list usingtolist()?它仍然是列表(行)的列表,因此您可能应该首先将其重新调整为只有 1 行。 -
您是否考虑过坚持使用 numpy 数组而不是集合,并使用 numpy 的矢量化 array set operations?
标签: python arrays numpy set tuples