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]] 

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