python用cv2图像处理时导致求和变量一直小于255

如下程序,求两个图像所有像素点第一位差值的绝对值

import cv2
# 1. 读取图像
image = cv2.imread('04.png')
image1 = cv2.imread('C:/work/python_program/picture/1.png')
sum_num1 = 0
sum_num2 = 0
for colume in range(len(image1)):
    for row in range(len(image1[colume])):
        print("image[colume][row][0]",image[colume][row][0])
        print("image1[colume][row][0]",image1[colume][row][0])
        sum_num1= sum_num1+ abs(image[colume][row][0]-image1[colume][row][0])
        print(sum_num1)
print(sum_num1)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出截取了一段如下

image[colume][row][0] 189
image1[colume][row][0] 62
58
image[colume][row][0] 189
image1[colume][row][0] 28
219
image[colume][row][0] 189
image1[colume][row][0] 99
53
image[colume][row][0] 187
image1[colume][row][0] 93
147
image[colume][row][0] 189
image1[colume][row][0] 115
221
image[colume][row][0] 190
image1[colume][row][0] 112
43
image[colume][row][0] 192
image1[colume][row][0] 89
146
image[colume][row][0] 196
image1[colume][row][0] 61
25

总之就是这个差值和始终不会超过255.一旦超过就会被截取

我推理得到的引起这个现象的结果是因为像素点的值不会超过255.所以求和变量被赋成相同属性所以也不会超过255

修改方法:把像素值强制转换成int型

 sum_num1= sum_num1+ abs(int(image[colume][row][0])-int(image1[colume][row][0]))

结果输出的数据就正常了

posted @ 2025-06-17 11:13  金一九  阅读(13)  评论(0)    收藏  举报