【问题标题】:How to add an image over another image using x,y coordinates?如何使用 x,y 坐标在另一个图像上添加图像?
【发布时间】:2019-04-22 14:11:15
【问题描述】:

我想使用 openCV 和 python 在 xyz.jpg 上添加图像“abc.jpg”。我已经获得了必须在其上添加图像的坐标 x,y,并且还调整了我的“abc.jpg”的大小,使其适合图像。现在如何添加它?

【问题讨论】:

标签: opencv image-processing cv2


【解决方案1】:

对于计算机而言,图像只是一个数字网格。有几种方法可以“添加”数字网格。在这个答案中,我将解释在图像“xyz”上添加图像“abc”的三种方法。这是一个非常简单的任务 a + b = c。但是,这只适用于图像形状相同的情况。要处理不同形状的图像,只需使用代码image[y: y+height, x: x+width] 修改图像的某些部分。

首先,让我们看一下我创建的示例图像。图像 xyz 具有垂直条,形状为 600,600。条的颜色为 123(其中 0 为黑色,255 为白色)。

接下来,我创建了另一个图像以添加到图像 xyz 之上。该图像称为图像abc。它的形状为 300,300。水平条也是颜色 123:

您可以通过将 xyz 图像中的像素替换为 abc 图像中的像素来“添加”图像:

x,y = 123,123
replace = xyz.copy()
replace[y: y + abc_size, x: x + abc_size] = abc
cv2.imshow('replace', replace)

您可以通过对数组求和来“添加”图像。这将导致图像在某些地方比任何一个源图像更亮。如果值超出范围 (0, 255),求和将产生奇怪的结果。

x,y = 123,123
added = xyz.copy()
added[y: y + abc_size, x: x + abc_size] += abc
cv2.imshow('added', added)

如果要平均图像中的像素,可以使用 cv2.addWeighted() 函数。

background = np.zeros_like(xyz)
x,y = 123,123
background[y: y + abc_size, x: x + abc_size] = abc
add_weighted = cv2.addWeighted(background, .5, xyz, .5, 1)
cv2.imshow('add_weighted', add_weighted)

【讨论】:

    猜你喜欢
    • 2012-11-26
    • 2014-06-01
    • 2020-06-28
    • 1970-01-01
    • 2022-11-14
    • 2023-03-09
    • 1970-01-01
    • 2012-01-15
    • 2021-07-10
    相关资源
    最近更新 更多