pythonopencv图像处理之图像算数运算及修改颜色空间

2022-08-09 18:50:14
目录
1.图像加法1.1Numpy加法1.2OpenCV加法2.图像融合3.改变颜色空间

1.图像加法

图像加法有两种方式,一种是通过>

不管使用哪种方法,相加的两个图像必须具有相同的深度和类型,简单理解就是图像的大小和类型必须一致。

1.1Numpy加法

Numpy>

    当最终的像素值 <= 255 时,则运算结果直接为 img1 + img2 。当最终的像素值 > 255 时,则运算的结果需对 255进行取模运算。

    1.2OpenCV加法

    OpenCV>

      当最终的像素值 <= 255 时,则运算结果直接为 img1 + img2 。当最终的像素值 > 255时,这时则是饱和运算,结果固定为 255 。

      两种加法方式对应的示例如下:

      import cv2 as cv
      # 读取图像
      img = cv.imread("data.jpg", cv.IMREAD_UNCHANGED)
      test = img
      # Numpy 加法
      result1 = img + test
      # OpenCV 加法
      result2 = cv.add(img, test)
      # 显示图像
      cv.imshow("img", img)
      cv.imshow("result1", result1)
      cv.imshow("result2", result2)
      
      # 等待显示
      cv.waitKey()
      cv.destroyAllWindows()

      可以看到,使用 Numpy 取模加法的图片整体更偏蓝色,而使用 OpenCV 饱和运算的加法,整体颜色更偏白色。

      2.图像融合

      图像融合其实也是一种图像加法,但是它和图像加法不同的是对图像赋予不同的权重,可以使图像具有融合或者透明的感觉。

        图像加法:>图像融合: img = img1 * alpha + img2 * beta + gamma

        图像融合用到的函数为 addWeighted() 具体如下:

        dst = cv.addWeighter(img1, alpha, img2, beta, gamma)
        dst = img1 * alpha + img2 * beta + gamma

        这里的 alpha 和 beta 都是系数,而 gamma 则是一个亮度调节量,不可省略。

        下面这个示例中,有一张地铁的图片,用这张图片和小姐姐做一个图像融合的案例:

        img1 = cv.imread(file, cv.IMREAD_UNCHANGED)
        img1=cv.resize(img1,(1000,1000))
        img2 = cv.imread(file1, cv.IMREAD_UNCHANGED)
        img2=cv.resize(img2,(1000,1000))
        # 图像融合
        img = cv.addWeighted(img1, 0.4, img2, 0.6, 10)
        # 显示图像
        cv.imshow("img1", img1)
        cv.imshow("img2", img2)
        cv.imshow("img", img)
        
        # 等待显示
        cv.waitKey()
        cv.destroyAllWindows()

        注意:这里如果二个图像像素不同要更改为同一像素下cv.resize(img,(width,hegiht))

        3.改变颜色空间

        OpenCV>

        对于改变颜色空间,我们使用 cvtColor(input_image, flag) 函数,其中的 flag 为转换的类型。

        一些常见的 flag 值:

        # BGR 转 灰度
        cv.COLOR_BGR2GRAY
        # BGR 转 HSV
        cv.COLOR_BGR2HSV
        # BGR 转 RGB
        cv.COLOR_BGR2RGB
        # 灰度 转 BGR
        cv.COLOR_GRAY2BGR

        我们使用 cvtColor() 这个函数将小姐姐转化成灰度图像,示例如下:

        import cv2 as cv
        # 读取图像
        img = cv.imread("data.jpg", cv.IMREAD_UNCHANGED)
        # 图像类型转换
        result = cv.cvtColor(img, cv.COLOR_RGB2GRAY)
        
        # 图像展示
        cv.imshow("img", img)
        cv.imshow("result", result)
        
        # 等待显示
        cv.waitKey()
        cv.destroyAllWindows()

        到此这篇关于python opencv 图像处理之图像算数运算及修改颜色空间的文章就介绍到这了,更多相关python opencv 图像处理内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!