1. 磐创AI-开放猫官方网站首页
  2. Medium

使用OpenCV创建合成图像(Python)

分离前景和背景图像以产生不同的合成图像。对图像的主观分析来检验真实感

引言

从深度学习体系结构的演变可以明显看出,前景对象或人可以很容易地从背景中分割出来。一旦前景对象被分割,该对象就可以覆盖在另一图像上。但这涉及时间和复杂性。我所说的时间是在准备数据集、网络架构和培训方面。Iâuro™我说的是准备数据集、网络架构和培训的时间。复杂的是数据准备和模型调整。

在深度学习体系结构演变和计算能力突破之前,人们使用的图像数量最少。由于计算能力没有突破,所以使用了最少数量的图像。通过使用前景、背景分离的合成数据以及从3DCAD模型生成的合成数据来生成最少数量的图像。让我们回到过去,看看我们是否能从这些数据中看到真实性。™‘s’s时光倒流,看看我们是否能从这些数据中看到真实性。另外,让我们来学习一些在图像数据处理过程中派上用场的开放式cv(open-cv),它在图像数据处理过程中会派上用场。

挡路图:

首先,生成合成图像所遵循的步骤可以概括在挡路图中,如下所示。

描述

以下是用文字和推理解释的过程:

所以,首先我们把前景图像做成透明图像。透明度很重要,因为它可以轻松地混合到背景图像中。基本上,它是将RGB转换为RGBA、添加Alpha通道并将其表示为元组的过程。然后读取背景图像并确保存在4个通道,而不是3个通道。

一旦前景和背景图像准备好,就让™的计划将两者融合为一体。所以现在我不得不考虑前景图像的大小,很明显它不能和背景的大小一样。™。调整前景图像的大小并在背景图像中设置位置。现在,使用for循环和切片方法将具有此x和y偏移量的图像混合到背景中。

现在,让?uro™深入代码并检查添加合成图像所获得的结果。

代码

让-euro™导入所需的库

import cv2 
import math
import numpy as np
from PIL import Image

给出路径,将前景图像转换为透明

foregrnd_img = 'foreground.jpg'
backgrnd_img = 'background.jpg'

调整前景图像的大小、设置相同背景图像的偏移量以及在这两个图像中混合可以如下所示。

# set channels to 4
if fore_channels < 4:
fore_img = cv2.cvtColor(fore_img, cv2.COLOR_BGR2BGRA)

以下代码和实验的结果如下:

前景图像

背景图像

具有前景和背景的合成图像

结论

显然,生成的合成图像看起来不真实。但是对于诸如对象检测之类的目标,这可以与边界框坐标一起用于训练模型。边界框坐标有助于准确理解我们在场景或图像中寻找的模式。

但是,如果我们使用这些图像数据来完成分类任务,这对目标来说是不够的。因此,现实主义没有得到维护。也许人们可以寻找深度学习的方法,使用Gans来生成具有不同背景的图像,以保持真实感。这可能是下一个正在筹划中的项目–FinŸ˜‰

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/20/%e4%bd%bf%e7%94%a8opencv%e5%88%9b%e5%bb%ba%e5%90%88%e6%88%90%e5%9b%be%e5%83%8fpython/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息