继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python-Opencv mask合并图片--Apple的学习笔记

慕村9548890
关注TA
已关注
手记 1296
粉丝 227
获赞 991

步骤

1. 先创建了抠图区域
2. 转为灰度图片
3. 通过灰度设置阈值对比,建立mask区域
4. 抠图区进行掩膜保护,留下需要的图片
5. 对贴图进行掩膜保护,留下需要的图片
6. 抠图区和贴图合并
7. 合并后再合并替换掉原来的大图区域
8. 显示最后的效果图

代码

import cv2
import numpy as np# 加载图像img1 = cv2.imread('san.jpg')
img2 = cv2.imread('3.jpg')# I want to put logo on top-left corner, So I create a ROIrows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ] #先创建了抠图区域# Now create a mask of logo and create its inverse mask alsoimg2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY) #转为灰度图片#cv2.imshow('img2gray',img2gray)ret, mask = cv2.threshold(img2gray, 175, 255, cv2.THRESH_BINARY) #通过灰度设置阈值对比,建立mask区域mask_inv = cv2.bitwise_not(mask)#cv2.imshow('mask',mask)#cv2.imshow('mask_inv',mask_inv)# Now black-out the area of logo in ROI# 取 roi 中与 mask 中不为零的值对应的像素的值,其他值为 0# 注意这里必须有 mask=mask 或者 mask=mask_inv, 其中的 mask= 不能忽略img1_bg = cv2.bitwise_and(roi,roi,mask = mask) #抠图区进行掩膜保护,留下需要的图片#cv2.imshow('img1_bg',img1_bg)# 取 roi 中与 mask_inv 中不为零的值对应的像素的值,其他值为 0。# Take only region of logo from logo image.img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv) #对贴图进行掩膜保护,留下需要的图片#cv2.imshow('img2_fg',img2_fg)# Put logo in ROI and modify the main imagedst = cv2.add(img1_bg,img2_fg) #抠图区和贴图合并img1[0:rows, 0:cols ] = dst #合并后再合并替换掉原来的大图区域cv2.imshow('res',img1) #显示最后的效果图cv2.waitKey(0)
cv2.destroyAllWindows()

webp

3.jpg

webp

san.jpg


运行结果


webp

运行结果.png



作者:applecai
链接:https://www.jianshu.com/p/7bc5b00ca549

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP