【OpenCv】利用roi 掩模 将一张图片添加到另一张上 |
您所在的位置:网站首页 › sai怎么把一张图片放到另一张上面 › 【OpenCv】利用roi 掩模 将一张图片添加到另一张上 |
背景
将图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 |