塑料挤出机设备厂_建仓机械 > 新闻资讯 >

烟台隔热条PA66生产设备 基于PythonOpenCV实现图像的覆盖

发布日期:2026-01-12 17:10点击次数:

塑料挤出机

前言

在本文中,我将展示如何将对象从一个图像添加到另一个图像。为此,我们需要:

1.背景图像;

2.对象

3.对象的mask(mask为黑,其他空间为白)。

在我们的例子中,背景是一张大海的照片,对象是一杯咖啡。在这里,他们是:

1.导入相关库

现在,使用jupiter notebook创建一个新文件。先,我们需要导入要的模块:

2.使用OpenCV读取和显示图像

让我们在cv2.imread()函数的帮助下打开图像并显示它们。

注意!

由于某些原因,OpenCV以BGR格式读取图像(蓝和红被交换)。我们需要借助cv2.cvtColor()函数将BGR转换为RGB格式。

更新时间:2020年03月19日 21:04

更新时间:2020年03月18日 21:06

各省、自治区、直辖市和新疆生产建设兵团市场监管局(厅、委):烟台隔热条PA66生产设备

我们看到背景图像的高度为1280,宽度为1920,目标图像的高度为860,宽度为1151。

让我们看看这些图片:

3.从物体的图像中去除背景

现在我们将定义一个函数,它将对象的mask转换为布尔数组。

在原始mask上,对象区域填充黑,背景区域填充白。

布尔数组具有与原始mask相同的高度和宽度,但只有一个通道。如果一个像素属于对象区域,它的值为True,否则为False。

布尔mask将帮助我们删除所有的背景像素。

4.添加对象到背景图像

在我们定义向背景图像添加对象的函数之前,我需要解释和可视化几个图像重叠的情况。

比如说,背景图像的高度是h_background,宽度是w_background,而目标图像的高度是h,宽度是w。

手机:18631662662(同微信号)

h应该小于h_background, w应该小于w_background。

case1) 如果我们将物体放置在背景的中间,那么一切都很简单:大小为h x w的背景区域部分应该被物体替换掉。

case2) 如果我们将物体放置在背景的左上角,那么物体的一部分可能在背景区域之外。在这种情况下,塑料挤出机背景区域的大小(h - y) x (w - x)的部分应该被替换为对象。

这里-x和-y是对象图像左上角的坐标。符号' - '在这里是因为背景图像的左上角坐标x=0和y=0。从背景图像的左上角到对象左上角的所有区域的x坐标都是负的烟台隔热条PA66生产设备,高于背景图像的左上角的所有区域的y坐标都是负的。

case3) 如果我们将物体放置在背景的左下角,那么物体的一部分可能在背景区域之外。在这种情况下,背景区域大小为(h_background - y) x (w - x)的部分应该被替换为对象。

一般,面积可以计算为(h - max (0, y + h - h_background)) x (w - x),因为如果目标图像的低边界在背景图像的低边界之上,那么h x (w - x)区域应该被替换为目标。

case4) 如果我们将物体放在背景的右上角,那么物体的一部分可能会在背景区域之外。在这种情况下,大小为 (h - y) x (w_background - x) 的背景区域部分应替换为对象。

一般来说,面积可以计算为 (h - y) x (w - max(0, x + w - w_background)),因为如果物体图像的右边界在背景图像右边界的左侧,则 (h - y) x w 区域应替换为对象。

case5) 如果我们将物体放在背景的右下角,那么物体的一部分可能会在背景区域之外。在这种情况下,大小为 (h_background - y) x (w_background - x) 的背景区域部分应替换为对象。

一般来说,面积可以计算为 (h - max(0, y + h - h_background)) x (w - max(0, x + w - w_background)),因为如果物体图像的右侧部分在背景图像的右部分的左边,如果对象图像的低部分高于背景图像的低部分,则应将h x w区域替换为对象。

现在,考虑到上述所有情况,让我们定义函数:

除了将背景、对象和mask图像传递给函数外,我们还将传递坐标x和y,它们定义了对象的中心位置。

坐标(0,0)是背景的左上角。

w_bg和h_bg是背景的宽度和高度。

x和y应满足以下条件:0 < x < w_bg和0 < y < h_bg。

5.结果展示

让我们看看这个函数是如何工作的。

例1). 让我们把杯子放在背景的中央。背景的宽度是1920,高度是1280,所以对象的中心坐标是x=1920/2=960和y=1280/2=640。

例2). 让我们把杯子放在背景的左下角。这一次,对象的中心坐标是x=200和y=1100。

例 3). 让我们把杯子放在背景的右下角。这次对象中心的坐标是 x=1800 和 y=1100。

例 4). 让我们把杯子放在背景的左上角。这次对象中心的坐标是 x=200 和 y=200。

例5). 让我们把杯子放在背景的右上角。这一次,对象的中心坐标是x=1800和y=200。

以上就是基于Python OpenCV实现图像的覆盖的详细内容烟台隔热条PA66生产设备,更多关于Python OpenCV图像覆盖的资料请关注脚本之家其它相关文章!

18631662662

Powered by 塑料挤出机设备厂_建仓机械 RSS地图 HTML地图

Copyright Powered by站群系统 © 2025-2035