基于Opencv的图像处理技术中图像的基本运算之一------------加法运算 

基于Opencv的图像处理技术中图像的基本运算之一------------加法运算 


      在面向Python的OpenCV中有两个方法可以实现图像的加法运算,一种是通过运算符“+”对图像进行加法运算,另一种是通过cv2.add()函数来实现对图像的加法运算。

因为计算机一般使用8个比特位来表示灰度图像,所以像素值的范围为0~255。当像素值的和超过255时,这两种加法方式的处理方法是不一样的。下面对这两种加法方式进行详细的介绍以及具体的阐释。

  1. 运算符“+”

在使用运算符“+”对两个图像的像素进行加法运算时,具体规则如下:

【例】使用数组生成两个矩阵,观察“+”的加法效果。

  代码如下:

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


      1. cv2.add()函数

      在使用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]]


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值