opencv(python)图像运算(加、减与差异影像)

1.差异影像 :   

                         

即两幅图像对应像素的差的绝对值。

在python中,利用cv2.imread输入图像,数据类型为np.uint8,在进行图像运算之前,需要转为浮点型np.float32,然后进行相减,在利用cv2.convertScaleAbs转为图像类型np.uint8. 

t1=np.array([[100,255],[255,100]],dtype=np.float32)
t2=np.array([[255,100],[100,255]],dtype=np.float32)
print np.subtract(t1,t2)
print t1-t2

 

np.subtract、np.add和直接用+、-符号是一样的

 print cv2.convertScaleAbs(t1-t2) 

 

 用convertScaleAbs()函数将其转回原来的uint8形式。

convertScaleAbs()函数的运算过程:先求绝对值,绝对值大于255的结果就是255,绝对值在0到255的为绝对值本身

注:千万不能使用numpy进行类型转换(t.astype(np.uint8)和np.uint8(t)一样)

          

 

 

2.图像加减:

使用 cv2.add() 和 cv2.subtract()

t1=np.array([[250,250],[250,250]],dtype=np.uint8)
t2=np.array([[10,10],[10,10]],dtype=np.uint8)
print cv2.add(t1,t2)

 

t1=np.array([[250,250],[250,250]],dtype=np.uint8)
t2=np.array([[10,10],[10,10]],dtype=np.uint8)
print cv2.subtract(t1,t2)
print cv2.subtract(t2,t1)

 

加减运算过程: 加减的结果若是在0到255之间,结果不变;小于0的为0,大于255的为255

另外,还有 cv2.addWeighted()函数:

 cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])

其中alpha是第一幅图片中元素的权重,beta是第二个的权重,gamma是加到最后结果上的一个值。

t1=np.array([100,100],dtype=np.uint8)
t2=np.array([100,100],dtype=np.uint8)
print cv2.addWeighted(t1,0.4,t2,0.6,100)

结果为:[[200],[200]] 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章