使用python在OpenCV中知道特定的添加点来添加两个图像

2024-06-03 13:56:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python在OpenCV中使用位操作添加两个不同大小的图像。我希望图像1(一个人的脸的图像)中的特定点与图像2(眼镜架的图像)中的特定点重合。特定的点不是图像的最角点,我知道框架眼镜的两个中点和瞳孔。我希望画面的中间点与眼睛在脸上的瞳孔点重合。我使用的代码将第二个图像的最左边的角点添加到Image1的特定点,如第10行所示,而我希望添加左玻璃框的中点。在

面部图像可以是任意随机图像,眼镜图像为-

Image 2

我正在使用代码:

import cv2
import numpy as np

img_frame = cv2.imread('image1.jpg',1)
img_in = cv2.imread('face.jpg',1)
new_image = np.zeros(img_frame.shape,dtype=np.uint8)

i,j,k = img_frame.shape

for ii in range (1,i):
    for jj in range (1,j):
        pixel = img_frame[ii,jj]

        img_in[339+ii,468+jj] = pixel

cv2.imwrite('pc2_with_frame_7.jpg',img_in)            
cv2.imshow('win',img_in)
cv2.waitKey(0)
cv2.destroyWindow('win')

任何帮助都将不胜感激。在

谢谢。在


Tags: 代码in图像importimgnpcv2frame
1条回答
网友
1楼 · 发布于 2024-06-03 13:56:48

好吧,看来没人能帮上忙,所以我会尽我所能。。。在

你要做的就是阿尔法合成。您可以在Wikipedia上阅读here以及OpenCV文档中的here。在

我选择的工具是IMAGE,它是免费的,有Perl、Python、C/C++绑定以及命令行工具。如果我从这张照片开始(人脸.jpg)公司名称:

enter image description here

把你的眼镜.jpg文件并将其转换为具有透明度的PNG,如下所示:

enter image description here

我可以在终端上运行以下ImageMagick命令

composite glasses.png face.jpg out.jpg

我明白了:

enter image description here

OpenCV似乎在透明度方面存在问题,并给出了一个解决方案here。如果您想尝试@ypnos在那篇文章中建议的屏蔽方法,我已经为您准备了必要的输入文件,您可以从我的网站下载:

glasses.png with alpha channel

input-mask.png

相关问题 更多 >