zoukankan      html  css  js  c++  java
  • [Python图像处理]五.图像加法运算,图像融合及图像类型转换

    图像加法运算

    1:借助Numpy库进行加法运算;运算方式为: 目标图像 = 图像1 + 图像2,运算结果进行取模运算

      当像素值 <=255 时,结果图像1+图像2    eg: 120 + 48 =168

      当像素值 >= 255 时,结果为对255取模的结果  eg: (255+56) %255=56

    2:OpenCV加法运算;目标图像 = cv2.add(图像1, 图像2)

      当像素值 <= 255 时,结果为 图像1+图像2 eg: 120+48 = 168

      当像素值  >= 255 时,结果为255

    代码如下:

    import cv2
    
    def test14():
        img = cv2.imread("result.jpg")
        test = img
        # 方法一: Numpy加法运算
        result1 = img + test
        # 方法二: OpenCV加法运算
        result2 = cv2.add(img, test)
        # 显示图像
        cv2.imshow("src", img)
        cv2.imshow("dest1", result1)
        cv2.imshow("dest2", result2)
    
        if cv2.waitKey(0) == 27:
            cv2.destroyAllWindows()
    
    test14()

    效果如下:

    参与运算的图像大小和类型必须一致

    图像融合

    图像融合通常是指将2张或2张以上的图像信息融合到1张图像上,融合的图像含有更多的信息,能够更方便人们观察或计算机处理。

    图像融合是在图像加法的基础上增加了系数和亮度调节量。

    图像加法:目标图像 = 图像1 + 图像2
    图像融合:目标图像 = 图像1 * 系数1 + 图像2 * 系数2 + 亮度调节量
    主要调用的函数是addWeighted,方法如下:
    dst = cv2.addWeighter(scr1, alpha, src2, beta, gamma)
    dst = src1 * alpha + src2 * beta + gamma
    其中参数gamma不能省略。
    代码如下

    import cv2
    def test14():
        src1 = cv2.imread("girl.jpg")
        src2 = cv2.imread("girl.jpg")
        # 图像融合
        result = cv2.addWeighted(src1, 1, src2, 1, 0)
        cv2.imshow("src1", src1)
        cv2.imshow("src2", src2)
        cv2.imshow("result", result)
        cv2.waitKey(0)
    
    test14()

    效果如下:

     需要注意的是两张融合的图像像素大小需要一致。

    设置不同的比例融合

    result = cv2.addWeighted(src1, 0.6, src2, 0.8, 10)

    图像类型转换

    图像类型转换是指将一种类型转换为另一种类型,比如彩色图像转换为灰度图像、BGR图像转换为RGB图像。OPenCV提供了200多种不同类型之间的转换,其中最常用的包括3类,如下:

    cv2.COLOR_BGR2GRAY

    cv2.COLOR_BGR2RGB

    cv2.COLOR_GRAY2BGR

    代码如下:

    import cv2
    
    def test15():
        img = cv2.imread("result.jpg")
    
        # 图像类型转换(转成灰度图像)
        result1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        # 通道转换
        result2 = cv2.cvtColor(result1, cv2.COLOR_BGR2BGRA)
        # 灰度图像转成BGR
        result3 = cv2.cvtColor(result1, cv2.COLOR_GRAY2BGR)
    
        cv2.imshow("src", img)
        cv2.imshow("result1", result1)
        cv2.imshow("result2", result2)
        cv2.imshow("result3", result3)
        cv2.waitKey(0)
    test15()

    效果如下:

     图像处理通常需要将彩色图像转换为灰度图像再进行后续的操作.

    转自: https://blog.csdn.net/Eastmount/article/details/82347501

  • 相关阅读:
    Atitti 图像处理 图像混合 图像叠加 blend 原理与实现
    Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途
    Atitit 图像处理 灰度图片 灰度化的原理与实现
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    Atitit 实现java的linq 以及与stream api的比较
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
    Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
    Atitit apache 和guava的反射工具
    atitit。企业的价值观 员工第一 vs 客户第一.docx
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/12872700.html
Copyright © 2011-2022 走看看