我有两个尺寸为128x128x128的图像。它们是二进制图像。我想在两个图像中找到1值的共同位置。例如,在图像1中的位置(2,2)具有值1,而在图像2中的(2,2)具有值1,它们被视为一个公共位置。我已经尝试过下面的代码,但是它说我无法进行对话。我应该如何解决?这是我在pos_common = tuple(set(pos_1) & set(pos_2))
TypeError: unhashable type: 'numpy.ndarray'
pos_1 = np.where(img1==1) #returns (array([ 0, 0, 0, ..., 127]), array([ 0, 0, 0, ..., 127]), array([ 0, 1, 2, ..., 127]))
pos_2 = np.where(img2==1) # returns (array([ 1, 4, 9, ..., 127]), array([ 0, 0, 0, ..., 127]), array([ 0, 1, 2, ..., 127]))
pos_common = tuple(set(pos_1) & set(pos_2)) # Error TypeError: unhashable type: 'numpy.ndarray'
答案 0 :(得分:2)
-嘿,金熙,
我会
这是我用来重现您的问题的代码(假设是简单的2d数组):
img1 = np.array([[10,10,10,1,1,1,10], [10,10,10,1,10,10,10]])
img2 = np.array([[10,10,10,10,1,10,10], [10,10,10,1,10,10,10]])
img1[img1 != 1] = 0
img2[img2 != 1] = 0
pos_common = np.multiply(img1, img2)
np.where(pos_common == 1)
希望这会有所帮助。
答案 1 :(得分:2)
我找到了简单的解决方案。它可能会帮助某人
pos_common = np.where((img1==1) & (img2==1))