5.算术运算

学习视频可参见python+opencv3.3视频教学 基础入门

像素运算

outline

  • 算术运算
    • 加,减,乘,除
    • 应用:调节亮度,调正对比度
  • 逻辑运算
    • 与,或,非
    • 应用:遮罩层控制
  • 改变对比度,亮度

1.算术运算

两张形状大小完全相同的图进行加减乘除

原图如下

image-20201004193935815

    • 两张图片的各个像素点的通道值相加

    • 黑为0,0图二中任意的一个像素值还是图二的值,白为255,255加图二中任意的一个像素值骑结果超过255,进行截断,最终结果还是255,即为白色

    • def add_demo(m1,m2):
          dst=cv.add(m1,m2)
          cv.imshow("add_demo",dst)
      
    • image-20201004194249572

    • 应用:去除叠加性噪声 ,生成图像叠加效果

    • 两张图片各个像素点的通道值相减

    • 黑为0,0-图二中任意的一个像素值为负值,而范围是0-255,因此取0,即为黑,白为255,255-图二中任意的一个像素值得到相反的颜色

    • def subtract_demo(m1,m2):
          dst=cv.subtract(m1,m2)
          cv.imshow("subtract_demo",dst)
      
    • image-20201004194959435

    • 应用:显示两幅图像的差异,检测同一场景 两幅图像之间的变化;图像分割,如分割运动的车辆,减法去掉静止的部分,剩余的是运动元素和噪声。

    • 两张图片各个像素点的通道值相乘

    • 黑为0,0*图二中任意的一个像素值为0,为黑,linux原图外边框是反锯齿的(边缘柔化),有模糊的,并不一定都为0,因此相乘之后会出现那种像烟花的边边

    • def multiply_demo(m1, m2):
          dst = cv.multiply(m1, m2)
          cv.imshow("multiply_demo", dst)
      
    • image-20201004195245425

    • 应用:图像的局部显示,用二值模板图像与原图像做乘法

    • 两张图片各个像素点的通道值相除

    • 应用少

    • def divide_demo(m1, m2):
          dst = cv.divide(m1, m2)
          cv.imshow("divide_demo", dst)
      
    • image-20201004200112898

      2.逻辑运算

    • 全1得1

    • def logic_demo(m1, m2):
          dst=cv.bitwise_and(m1,m2)
          cv.imshow("logic_demo", dst)
      
    • image-20201004202051738

    • 相当于进行了一个遮罩

    • 应用:求两个子图的相交子图

    • 有1得1

    • def logic_demo(m1, m2):
          dst=cv.bitwise_or(m1,m2)
          cv.imshow("logic_demo", dst)
      
    • image-20201004202154895

    • 应用:合并子图

    • 0得1,1得0 ,针对的是一张图

    • def logic_demo(m1):
          dst=cv.bitwise_not(m1)
          cv.imshow("logic_demo", dst)
      
    • image-20201004202302953

    • 应用:获得子图的补图

3.改变对比度,亮度

def contrast_brightness_demo(image, c, b):
    h, w, ch = image.shape
    #初始化一张黑图
    blank = np.zeros([h, w, ch], image.dtype)

    # 图像混合,c, 1-c为这两张图片的权重
    dst = cv.addWeighted(image, c, blank, 1-c, b)
    cv.imshow("contrast_brightness_demo", dst)
    
src=cv.imread("./images/lena.jpg")
#对比度1.2,亮度100
contrast_brightness_demo(src,1.2,100)

结果如下:

.imshow(“contrast_brightness_demo”, dst)

src=cv.imread("./images/lena.jpg")
#对比度1.2,亮度100
contrast_brightness_demo(src,1.2,100)


结果如下:
![image-20201004213238394](https://img-blog.csdnimg.cn/img_convert/a71d0abf4caa698daa7fe49c6e582e8b.png)

欢迎大家关注我的公众号小郭学数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201104182429520.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4OTM5OTkx,size_16,color_FFFFFF,t_70#pic_center)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值