如何在python中的空背景图像(200x200)中随机添加20个图像(10x10)?

如何在python中的空背景图像(200x200)中随机添加20个图像(10x10)?,python,image,opencv,background,geometry,Python,Image,Opencv,Background,Geometry,我正在做一个小项目,在另一个图像中随机放置或放置几个大小(10wx10h)的图像,该图像将用作python中大小(200wx200h)的背景。小图像应放在背景图像中的任意位置 我有20个大小为10x10的小图像和一个大小为200x200的空图像背景。我想把我的20个小图像放在背景中一个随机位置的空背景图像中 有没有一种用Python实现的方法 代码 上面的代码是针对一个图像的,我想对20个图像执行此操作,并将它们放置在一个随机位置,假设您有背景图像background.jpg(减少到200x20

我正在做一个小项目,在另一个图像中随机放置或放置几个大小(10wx10h)的图像,该图像将用作python中大小(200wx200h)的背景。小图像应放在背景图像中的任意位置

我有20个大小为10x10的小图像和一个大小为200x200的空图像背景。我想把我的20个小图像放在背景中一个随机位置的空背景图像中

有没有一种用Python实现的方法

代码

上面的代码是针对一个图像的,我想对20个图像执行此操作,并将它们放置在一个随机位置,假设您有背景图像
background.jpg
(减少到200x200 px)和10个图像:
image01.png
image02.png
<代码>图像10.png(10x10像素)。然后:

输出图像:


你试过什么?你用的是什么软件包?如果我理解你的意图,在Python中它当然是可行的。你的问题太广泛了,但是如果你提供一些细节和示例代码,你可能会得到一些帮助。我使用了粘贴函数(枕头库)并定义了一个区域来粘贴图像,但我想将它们放在背景图像中的随机位置,并保留二进制掩码。代码:从PIL导入图像背景\u img=image.open(“path”)image=image.open(“path”)area=(80,80,160,160)background\u img.paste(image,area)background\u image.show()上面的代码是针对一个图像的,我想针对20个图像进行此操作,并将它们放置在随机位置10x10图像是否都有类似的名称,以便程序可以找到它们-它们是什么?背景图像是否有名称-而不是
”路径“
?请不要将代码放在评论区-无法阅读!单击问题下方的
edit
,更新问题,让所有人都能看到。首先,10x10图像有不同的名称,如(img1到img10)。背景图像有一个名称(“…/bg.jpg”),我在背景图像中画了一个圆圈,作为放置20个小图像的感兴趣区域。图像必须放在圆圈内。我不知道如何得到画圆的坐标。当我打印圆的输出时,它不会给出任何结果。您可以增加偏移量,以确保所有图像都放置在圆内。看到我的更新答案结果应该像上面的图片,但是,我没有看到你在哪里画的圆圈,因为这个圆圈,我画它是为了知道我将随机把我的小图片放在哪个区域;然而,我仍然不知道如何得到我画的圆的坐标。一旦我得到圆的坐标,我会告诉我的程序把我的小图像放在那里。如果你看我的代码,圆圈图像就是我保存的图像(我假设当我把所有的小图像放在圆圈中时,我会保存该图像),你的问题是把图像放在空背景图像中,对吗?那么画圈有什么关系呢?一开始,我没有画圈。我画了一个圆圈来定义一个区域,在那里我将随机放置我的小图像。我认为下面的链接与我的问题非常相似,关于获取我绘制的圆的坐标(像素)。我会仔细看看。。。
# Depencies importation
import cv2

# Saving directory
saving_dir = "../Saved_Images/"

# Read the background image
bgimg = cv2.imread("../Images/background.jpg")

# Resizing the bacground image
bgimg_resized = cv2.resize(bgimg, (2050,2050))

# Read the image that will be put in the background image (exemple of 1)
small_img = cv2.imread("../Images/small.jpg")

# Convert the resized background image to gray
bgimg_gray = cv2.cvtColor(bgimg, cv2.COLOR_BGR2GRAY) 
# Convert the grayscale image to a binary image
ret, thresh = cv2.threshold(bgimg_gray,127,255,0)
# Determine the moments of the binary image
M = cv2.moments(thresh)
# calculate x,y coordinate of center
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])

# drawing the circle in the background image
circle = cv2.circle(bgimg, (cX, cY), 930, (0,0,255), 9)

print(circle)

# Saving the new image
cv2.imwrite(saving_dir+"bgimg"+".jpg", bgimg)

cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.resizeWindow("Test", 1000, 1200)
# Showing the images
cv2.imshow("image", bgimg)
# Waiting for any key to stop the program execution
cv2.waitKey(0)
import glob
import random
from PIL import Image


img_bg = Image.open('circle.jpg')
width, height = img_bg.size
images = glob.glob('*.png')
for img in images:
    img = Image.open(img)
    x = random.randint(40, width-40)
    y = random.randint(40, height-40)
    img_bg.paste(img, (x, y, x+10, y+10))
img_bg.save('result.png', 'PNG')