gpt4 book ai didi

python - 在OpenCV中高效地转换和混合图像

转载 作者:行者123 更新时间:2023-12-02 17:58:50 25 4
gpt4 key购买 nike

我正在编写一个程序,以模拟具有给定图像的笔触,并且阻止了实际将笔触放下。现在,我正在使用OpenCV和Numpy通过将原始图像的一部分设置为新图像来旋转和混合图像。这是当前代码。

def rotate(img, deg):
"""Rotates an image a certain number of degrees"""
h, w, c = img.shape
matrix = cv2.getRotationMatrix2D((w / 2, h / 2), deg, 1)
out = cv2.warpAffine(img, matrix, (w, h), flags=cv2.INTER_LINEAR)

return out

def paste(img1, img2, mask, x, y):
"""Pastes one image on top of another at a given location"""
h1, w1, _ = img1.shape # dimensions of original image
h2, w2, _ = img2.shape # dimensions of pasted image

if y > h1 or x > w1:
return img1

stamp = img2
factor = mask

subx = ((w2 + x) - w1)
suby = ((h2 + y) - h1)

if suby <= 0:
suby = 0
if subx <= 0:
subx = 0

stamp = img2[0:h2 - suby, 0:w2 - subx]
factor = mask[0:h2 - suby, 0:w2 - subx]
snippet = img1[y:y + (h2 - suby), x:x + (w2 - subx)]

stamp = cv2.add(cv2.multiply(snippet, (1-factor)), cv2.multiply(stamp, factor))
out = img1
out[y:y + h2, x:x + w2] = stamp

return out
它有效,但仅勉强有效。在某些情况下会遇到一些问题,关于如何使用它的限制非常有限,而且非常慢。 是否有更简单/更好的方法来用OpenCV转换和混合图像,或者不同的框架(基于sprite / object,如pygame)对此更好? 谢谢!

最佳答案

我建议您尝试无缝克隆。查阅Satya Mallick的出色教程:https://www.learnopencv.com/seamless-cloning-using-opencv-python-cpp/
在这种情况下,您可以将教程中的平面替换为画笔。

关于python - 在OpenCV中高效地转换和混合图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64073280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com