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]))
结果输出的数据就正常了

浙公网安备 33010602011771号