当前位置 博文首页 > 称霸学前班的博客:基于Python的Opencv学习

    称霸学前班的博客:基于Python的Opencv学习

    作者:[db:作者] 时间:2021-08-12 15:05

    基于Python的Opencv学习第四天

    共同学习Opencv的小伙伴们,大家好。今天是我们学习Opencv的第四天了,之前几篇博客从最基本的像素介绍到图像的感兴趣区,今天来看看我为大家带来什么吧!

    一.图像的加法运算

    说到Opencv里面对图像进行加法运算,那就要分两种加法运算,分别是通过numpy包来进行加法运算,和直接Opencv加法运算,在我们了解语法之前,还是来看看图像的加法运算在opencv里面是如何实现的。

    1.加法运算的概念
    这里我们以八位图像来举例说明,首先八位图像在计算机中是以二进制来存放,最小值是0000 0000对应十进制中的0,而最大值是1111 1111对应十进制中的255,一共256中灰度集。在这里插入图片描述

    2.利用numpy包进行加法运算(取余运算)
    在使用numpy包进行加法运算时,我们用到的语法如下:
    结果=图像1+图像2

    在这里,两个图像的像素点的相加得到的数字<=255时,那么我们的结果就等于这个数字
    如果两个图像的像素点的相加得到的数字>255时,那么我们的结果要对这个数字进行对255的取余运算。

    例如,两个像素分别为100和58,那么100+58=158<255,则结果就等于158;
    如果两个像素分别为255和58,那么255+58=(255+58)%255=58,则结果就是58。

    3.利用opencv进行加法运算(饱和运算)
    在opencv中进行加法运算时,我们需要调用add()函数,其语法如下:
    结果=cv2.add(图像1,图像2)

    这时,结果也分两种情况
    如果和的数值<=255,那么结果为该数值;
    如果和的数值>255,那么结果只能为255。

    在这里,我们称为饱和运算,即不管加起来的数值等于多少,他最大只能是255。
    (普及一下,opencv中0代表黑色,255代表白色,越靠近0则黑色的程度越深,越靠近255,则白色的程度越深。)

    注意!!!参与运算的图像大小,类型必须保持一致!!!

    3.代码实现
    接下来我们通过代码来演示一下图像的加法运算。

    >>> import cv2
    >>> import numpy as np
    >>> img=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
    >>> pic=img
    >>> cv2.imshow("img",img)
    >>> i=pic+img
    >>> cv2.imshow("i",i)
    >>> k=cv2.add(img,pic)
    >>> cv2.imshow("k",k)
    >>> 
    

    这里我们i是用numpy包进行的运算,k是在opencv里面运用了add()函数进行的运算,来看看结果!
    在这里插入图片描述

    二.图像融合

    1.图像融合的概念
    首先来介绍一下图像融合的概念,指的是将2张或2张以上的图像信息融合到1张图像上,这里小伙伴们就疑惑了,这个和图像相加不就是一样的吗,其实不同,融合的图像含有更多的信息,能够更方便人来观察或者计算机处理。在这里插入图片描述
    如图,用两个白色框框起来的两幅图像区域都是有部分不清晰,但是通过图像融合,我们能够得到一幅清晰的图像,这就是图像的融合。

    2.图像融合的语法
    这里我只介绍了将两幅图像以不同权重的方式给加在一起,我们需要调用addWeighted()函数,来看语法:

    dst=cv2.addWeighted(src1,alpha,src2,beta,gamma)

    而dst=src1alpha+src2beta+gamma,如果用中文表示就是:
    结果图像=图像1系数1+图像2系数2+亮度调节量

    这里系数指的是图像的透明度,如果系数越大,则该图像占比的透明度越大,显示在结果图像上时,该图像就越深,而亮度调节量就是用来调节结果图像的亮度,值越大就越亮,最小是0,即不做改变,但是参数gamma(亮度调节量)不能省略。

    3.代码和结果
    刚刚介绍了图像融合的语法,老规矩,上代码和结果:

    impore cv2
    a=cv2.imread(r"C:\Users\LT010407\Desktop\3.jpg")
    b=a=cv2.imread(r"C:\Users\LT010407\Desktop\3.jpg")
    result=cv2.addWeighted(a,0.6,b,0.3,0)
    cv2.imshow("result",result)
    

    在这里插入图片描述
    在这里我们可以看见,这个lena图像因为我调的是0.3,所有就更淡一点,而那个boat图像我调到0.6,所有就更重一点,亮度调节是0。

    好的,今天的内容就讲到这里了吧,下一篇博客见。

    cs