我希望将两个灰色的人脸相减以查看它们之间的差异,但是我遇到了一个问题,即例如将[4] - [6]相减会得到[254]而不是[-2](或差异为[2])。
print(type(face)) #<type 'numpy.ndarray'>
print(face.shape) #(270, 270)
print(type(nface)) #<type 'numpy.ndarray'>
print(nface.shape) #(270, 270)
#This is what I want to do:
sface = face - self.nface #or
sface = np.subtract(face, self.nface)
两者都不会给出负数,而是将0后的余数从255中减去。
sface的输出示例:
[[ 8 255 8 ..., 0 252 3]
[ 24 18 14 ..., 255 254 254]
[ 12 12 12 ..., 0 2 254]
...,
[245 245 251 ..., 160 163 176]
[249 249 252 ..., 157 163 172]
[253 251 247 ..., 155 159 173]]
我的问题:
如何将sface转换为一个numpy.ndarray(270, 270),在减去或每个点在face和nface之间的差异后具有负值?(因此不使用numpy.setdiff1d,因为它仅返回1维而不是270x270)
工作中
根据@ajcr的答案,我执行了以下操作(使用abs()显示减去的面):
face_16 = face.astype(np.int16)
nface_16 = nface.astype(np.int16)
sface_16 = np.subtract(face_16, nface_16)
sface_16 = abs(sface_16)
sface = sface_16.astype(np.int8)
a-b
操作,就会得到负数。 - Ffisegydddtype=np.int16
。 - jonrsharpe