【OpenCv】利用roi 掩模 将一张图片添加到另一张上

您所在的位置:网站首页 sai怎么把一张图片放到另一张上面 【OpenCv】利用roi 掩模 将一张图片添加到另一张上

【OpenCv】利用roi 掩模 将一张图片添加到另一张上

2024-07-12 07:36| 来源: 网络整理| 查看: 265

背景

将图1中花的部分,添加到图3中,得到图四的效果

 

图片1

图片2

图片3

图片4

1.读取图片调整图片大小

调整图片的大小目的是为了添加到图三中时候不会过大,适应背景。

# --- coding:UTF-8 --- import cv2 import numpy as np # 读取图片 img1=cv2.imread("./data/flower.bmp") img2 = cv2.imread("./data/flowerback.bmp") img3 = cv2.imread("./data/girl.bmp") # 缩小图片1/2 x, y = img1.shape[0:2] img1 = cv2.resize(img1, (int(y / 2), int(x / 2))) x, y = img2.shape[0:2] img2 = cv2.resize(img2, (int(y / 2), int(x / 2)))

2.获得掩模

# 当图片作为膜的时候,黑色部分是保留的,所以要对他进行非运算 img2not = cv2.bitwise_not(img2) #非运算 r2,c2,ch2=np.shape(img1) # 选择感兴趣区域 roi=img3[10:r2+10,300:c2+300] # 将图片转换成灰度图像,通过阈值化转变成黑白图像 img2_gray=cv2.cvtColor(img2not,cv2.COLOR_BGR2GRAY) ret,ma1=cv2.threshold(img2_gray,170,255,cv2.THRESH_BINARY) cv2.imshow('1',ma1)

3.利用掩模抠出花的背景

# 抠图抠出花的背景 fg1=cv2.bitwise_and(roi,roi,mask=ma1) cv2.imshow('2',fg1)

4.掩模取反,在抠出花

# 抠图抠出花 ma2=cv2.bitwise_not(ma1) cv2.imshow('3',ma2) fg2=cv2.bitwise_and(img1,img1,mask=ma2) cv2.imshow('4',fg2)

5.图片叠加

# 图片叠加,效果为花在背景上 dst=cv2.add(fg1,fg2) roi[:]=dst cv2.imshow('r',roi) cv2.imshow('img3',img3) cv2.waitKey(0) cv2.destroyAllWindows()



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3