OpenCV基础 | 5.像素运算

2021-08-09 10:19:07 浏览数 (1)

作者:小郭学数据

源自:快学python

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

今天写的是图像像素运算

outline

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

1.算术运算

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

原图如下

  • 两张图片的各个像素点的通道值相加
  • def add_demo(m1,m2): dst=cv.add(m1,m2) cv.imshow("add_demo",dst)
  • 应用:去除叠加性噪声 ,生成图像叠加效果

  • 两张图片各个像素点的通道值相减
  • def subtract_demo(m1,m2): dst=cv.subtract(m1,m2) cv.imshow("subtract_demo",dst)
  • 应用:显示两幅图像的差异,检测同一场景 两幅图像之间的变化;图像分割,如分割运动的车辆,减法去掉静止的部分,剩余的是运动元素和噪声。

  • 两张图片各个像素点的通道值相乘
  • def multiply_demo(m1, m2): dst = cv.multiply(m1, m2) cv.imshow("multiply_demo", dst)
  • 应用:图像的局部显示,用二值模板图像与原图像做乘法

  • 两张图片各个像素点的通道值相除
  • def divide_demo(m1, m2): dst = cv.divide(m1, m2) cv.imshow("divide_demo", dst)

2.逻辑运算

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

  • 有1得1

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

3.改变对比度,亮度

代码语言:javascript复制
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)

结果如下:

结语

以上内容仅是自我学习时记录的笔记,欢迎大家批评指正,一起学习进步。

参考资料

[1]

python opencv3.3视频教学 基础入门: https://www.bilibili.com/video/BV1QW411F7e7?p=1

0 人点赞