我尝试使用python在OpenCV中使用位操作添加两个不同大小的图像。我希望图像1(一个人的脸的图像)中的特定点与图像2(眼镜架的图像)中的特定点重合。特定的点不是图像的最角点,我知道框架眼镜的两个中点和瞳孔。我希望画面的中间点与眼睛在脸上的瞳孔点重合。我使用的代码将第二个图像的最左边的角点添加到Image1的特定点,如第10行所示,而我希望添加左玻璃框的中点。在
面部图像可以是任意随机图像,眼镜图像为-
我正在使用代码:
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')
任何帮助都将不胜感激。在
谢谢。在
好吧,看来没人能帮上忙,所以我会尽我所能。。。在
你要做的就是阿尔法合成。您可以在Wikipedia上阅读here以及OpenCV文档中的here。在
我选择的工具是IMAGE,它是免费的,有Perl、Python、C/C++绑定以及命令行工具。如果我从这张照片开始(人脸.jpg)公司名称:
把你的眼镜.jpg文件并将其转换为具有透明度的PNG,如下所示:
我可以在终端上运行以下ImageMagick命令
我明白了:
OpenCV似乎在透明度方面存在问题,并给出了一个解决方案here。如果您想尝试@ypnos在那篇文章中建议的屏蔽方法,我已经为您准备了必要的输入文件,您可以从我的网站下载:
glasses.png with alpha channel
input-mask.png
相关问题 更多 >
编程相关推荐