基于Opencv的图像处理技术中图像的基本运算之一------------加法运算
在面向Python的OpenCV中有两个方法可以实现图像的加法运算,一种是通过运算符“+”对图像进行加法运算,另一种是通过cv2.add()函数来实现对图像的加法运算。
因为计算机一般使用8个比特位来表示灰度图像,所以像素值的范围为0~255。当像素值的和超过255时,这两种加法方式的处理方法是不一样的。下面对这两种加法方式进行详细的介绍以及具体的阐释。
- 运算符“+”
在使用运算符“+”对两个图像的像素进行加法运算时,具体规则如下:
【例】使用数组生成两个矩阵,观察“+”的加法效果。
代码如下:
import numpy
import cv2#导入模块
image1=numpy.random.randint(0,256,size=[256,256],dtype=numpy.uint8)
image2=numpy.random.randint(0,256,size=[256,256],dtype=numpy.uint8)#定义两个随机的灰度图像像素矩阵
print("image1=\n",image1)
print("image2=\n",image2)
print("image3=\n",image1+image2)
cv2.imshow("image1",image1)
cv2.imshow("image2",image2)
cv2.imshow("image",image1+image2)
cv2.waitKey()
cv2.destroyAllWindows()
程序运行结果:
image1=
[[ 53 152 17 ... 73 71 101]
[181 168 29 ... 182 114 194]
[ 20 81 86 ... 149 224 25]
...
[ 1 226 172 ... 91 158 45]
[176 77 40 ... 163 12 108]
[239 238 117 ... 143 178 206]]
image2=
[[205 157 44 ... 3 124 1]
[ 19 174 143 ... 171 162 3]
[ 61 113 179 ... 212 110 40]
...
[ 0 73 108 ... 201 110 83]
[191 210 212 ... 20 82 27]
[131 217 170 ... 102 112 19]]
image3=
[[ 2 53 61 ... 76 195 102]
[200 86 172 ... 97 20 197]
[ 81 194 9 ... 105 78 65]
...
[ 1 43 24 ... 36 12 128]
[111 31 252 ... 183 94 135]
[114 199 31 ... 245 34 225]]
在使用cv2.add()函数实现图像的加法运算时,一般格式为:
Result=cv2.add(a,b)
其中:
Result:表示计算的结果。
a和b表示需要进行加法运算的两个像素值。
使用cv2.add()函数进行图像的加法运算
使用cv2.add()函数进行图像加法运算时,会得到像素值的最大值。规则如下:
【例】使用numpy 中的数组生成两个矩阵,观察cv2.add()函数的加法效果。
import numpy
import cv2#导入模块
image1=numpy.random.randint(0,256,size=[256,256],dtype=numpy.uint8)
image2=numpy.random.randint(0,256,size=[256,256],dtype=numpy.uint8)#定义两个随机矩阵,范围在0~255之间
image3=cv2.add(image1,image2)#使用cv2.add()函数实现图像的加法运算
print("image1 :\n",image1)
print("image2 :\n",image2)
print("image3 :\n",image3)#输出图像像素矩阵
cv2.imshow("image1",image1)
cv2.imshow("image2",image2)
cv2.imshow("image3",image3)#显示三种图像
cv2.waitKey()#等待按键
cv2.destroyAllWindows()#释放窗口
程序运行结果如下:
image1 :
[[ 21 211 61 ... 242 102 224]
[ 71 114 67 ... 230 58 136]
[249 160 29 ... 90 59 160]
...
[249 249 14 ... 224 208 230]
[189 201 165 ... 224 22 33]
[230 156 253 ... 213 229 161]]
image2 :
[[160 17 226 ... 155 224 144]
[129 109 22 ... 220 142 184]
[ 91 230 159 ... 130 236 79]
...
[ 2 91 99 ... 191 11 86]
[243 91 105 ... 179 6 211]
[240 114 163 ... 235 13 223]]
image3 :
[[181 228 255 ... 255 255 255]
[200 223 89 ... 255 200 255]
[255 255 188 ... 220 255 239]
...
[251 255 113 ... 255 219 255]
[255 255 255 ... 255 28 244]
[255 255 255 ... 255 242 255]]