您的位置:首页 > 编程语言 > Python开发

Python OpenCV 简单图像比较

2015-01-15 16:41 731 查看
项目需要做两张图像比较的差,感觉Python用起来很方便,手头正好有OpenCV。红绿代表插值正负,为了更好的可视化,差值均放大10倍显示。

import cv2

def clmap(v, k, upBound):   #mul and clamp
val = v * k
if val > upBound:
return upBound
else:
return val

inImage_1 = 'B_Tri.bmp'     #
inImage_2 = 'B_RT.bmp'      #

dif_img = 'dif_' + inImage_1

img_1 = cv2.imread(inImage_1)   # read as color image
img_2 = cv2.imread(inImage_2)

dif = img_1.copy()
show_dif = dif.copy()    # dif image for show only

width = img_1.shape[0]  #get width
height = img_1.shape[1] #get height

for i in range(width):
for j in range(height):
#dif[i, j] = [128,0,0]      # b g r
#print img_1[i,j]-img_2[i,j]

diff = int(img_1[i,j][0])-int(img_2[i,j][0])

if diff < 0:
show_dif[i,j] = [0,clmap(abs(diff), 10, 255),  0]

elif diff > 0:
show_dif[i, j]= [0, 0, clmap(abs(diff), 10, 255)]
else:
show_dif[i,j] = [0]

dif[i,j] =  [abs(diff)] * 3

print dif_img
print 'different data:'
print 'max : ', dif.max()
print 'min : ', dif.min()
print 'mean : ', dif.mean()

cv2.imwrite(dif_img, show_dif)

cv2.imshow('_dif',show_dif)
cv2.waitKey(0)
cv2.destroyAllWindows()


image1



image2



dif

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: