• (五)图像的算术和逻辑操作


    1.两幅相同尺寸的图像叠加,比较三种方式,一般采用权重addWeighted

     import cv2                                               
     import numpy as np
     
     img1=cv2.imread('3D-Matplotlib.png')
     img2=cv2.imread('mainsvmimage.png')
     
     #第一种混乱的加,不用
     add1=img1+img2
     #第二种得到很亮的图像,原理如下:
     #(155,211,79)+(50,170,200)=205,381,279...translated to(205,255,255)
     add2=cv2.add(img1,img2)
     #第三种,带权重的加
     weighted=cv2.addWeighted(img1,0.6,img2,0.4,0)
     
     cv2.imshow('add1',add1)
     cv2.imshow('add2',add2)
     cv2.imshow('add3',weighted)
     cv2.waitKey(0)
     cv2.destroyAllWindows()

    原始图片(两个图片尺寸相同)如下:

      

    叠加后的三种图像:

     

    2.将小图片叠加到大图片上,且不保留小图片的白色区域。

    (1)将小图片转为灰度图片,且使用阀值得到去周围的模板,再逻辑取反得到去图标的模板

    (2)使用模板2,去掉roi的图标部分,然后使用模板1,去掉图2的白色部分,得到只有彩色图标的图

    (3)获得需要的图像

     import cv2                                                                                                                           
     import numpy as np
     
     img1=cv2.imread('3D-Matplotlib.png')
     img2=cv2.imread('mainlogo.png')
     
     rows,cols,channels=img2.shape
     roi=img1[0:rows,0:cols]
     
     #得到小图像的灰度图
     img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
     #设置阀值,<220的变为黑色,>220的变为白色,并反转
     #即得到图标白,周围黑的图像
     ret,mask = cv2.threshold(img2gray,220,255,cv2.THRESH_BINARY_INV)
    
     #按位取反,得到图标黑,周围白的图像
     mask_inv = cv2.bitwise_not(mask)
     
     #使用模板2,去掉roi的图标部分
     img1_bg = cv2.bitwise_and(roi,roi,mask=mask_inv)
     #使用模板1,去掉图2的白色部分,得到只有彩色图标的图
     img2_fg=cv2.bitwise_and(img2,img2,mask=mask)
     
     #获得需要的图像
     dst=cv2.add(img1_bg,img2_fg)
     img1[0:rows,0:cols]=dst
     cv2.imshow('res',img1)
     cv2.waitKey(0)
     cv2.destroyAllWindows()
  • 相关阅读:
    【java编程】使用System.getProperty方法,如何配置JVM系统属性
    【java多线程】CountDownLatch
    【java多线程】ConcurrentLinkedHashMap
    【java编程】ServiceLoader使用看这一篇就够了
    【JVM】java对象
    【git】Git常用命令
    centos7安装配置mysql5.7
    第十三章 redis-cluster原理
    《mysql技术内幕 InnoDB存储引擎(第二版)》阅读笔记
    第二章 BIO与NIO
  • 原文地址:https://www.cnblogs.com/sunnyCx/p/8137942.html
Copyright © 2020-2023  润新知