【opencv】图片背景去除处理与图片合成

图片LOGO去背景合成图

实际工作中经常遇到把LOGO合并到大图上面,因此通过模块opencv的学习把最终实现效果呈现给各位优秀的朋友,希望制作的过程与思路能够对大家学习可视化起到画龙点睛的作用。

                                                                          ***德天老师,祝大家学习愉快!***

背景图:

在这里插入图片描述

LOGO合成图:

在这里插入图片描述

代码块整理

import cv2
import numpy as np
img = cv2.imread('img1/jing.jpg')
img_big = cv2.imread('img1/mount_water.jpg')

h,w,_ = img.shape
roi = img_big[0:h,0:w]
#1 mask是轮廓线条为黑,背景为白
#2 mask是轮廓为白,背景为黑

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#logo转灰
ret,mask=cv2.threshold(gray,200,255,cv2.THRESH_BINARY) #通过低于200变黑,变成黑白mask类型
mask_inv=cv2.bitwise_not(mask)  #反转黑白处理


#显示轮廓并镂空底图
mask_and = cv2.bitwise_and(roi,roi,mask=mask)
#无背景轮廓
mask_small = cv2.bitwise_and(img,img,mask=mask_inv)
#前后合并完成效果
dst = cv2.add(mask_and,mask_small)
img_big[0:h,0:w]=dst
#依次显示
cv2.imshow('mask',mask)
cv2.imshow('mask_inv',mask_inv)
cv2.imshow('mask_and',mask_and)
cv2.imshow('mask_small',mask_small)
cv2.imshow('mask_big',img_big)
cv2.waitKey()
cv2.destroyAllWindows()

图像合成分层分析:

1、获取roi,小图在大图上的映射区域
在这里插入图片描述

2、拿到白色背景,黑色轮廓的mask
在这里插入图片描述

3、拿到mask的黑白反转图mask_inv
在这里插入图片描述

4、通过数据运算bitwise_and,获取带有底图背景被镂空轮廓的图片
在这里插入图片描述

5、通过msk_inv结合运算bitwise_and,拿到仅显示轮廓的轮廓图mask_small
在这里插入图片描述

6、将4,5的背景图和轮廓图合并得到一块合成图大小与Logo图相当的除掉背景的合成图dst
在这里插入图片描述

7、将合并图dst,传递到背景图上roi位置
在这里插入图片描述
根据学习制作过程中出现的问题梳理总结。
理解 mask_and = cv2.bitwise_and(roi, roi, mask=mask) 图片如下:
第一个roi为输入的背景图映射图,第二个roi为使用bitwise_and运算显示的蓝天背景图,圆形圈起的图是mask_and结果图
在这里插入图片描述
理解mask_small = cv2.bitwise_small(img,img,mask=mask_inv)图片如下
在这里插入图片描述

鉴于涉及到问题较多,因此需要理解好每一步的图片代表含义。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值