加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 13:42:34 所属栏目:Python 来源:网络整理
导读:我试图使用 python在OpenCV中使用按位操作添加两个不同大小的图像.我希望 Image1中的特定点(人脸的图像)与Image2中的特定点(眼镜架的图像)重合.特定的点不是图像的最远点.我知道框架眼镜的2个中点和眼睛的瞳孔.我希望框架中点与脸部眼睛的瞳孔点重合.我正在
我试图使用 python在OpenCV中使用按位操作添加两个不同大小的图像.我希望 Image1中的特定点(人脸的图像)与Image2中的特定点(眼镜架的图像)重合.特定的点不是图像的最远点.我知道框架眼镜的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')

任何形式的帮助将不胜感激.

谢谢.

解决方法

好吧,似乎没有其他人可以提供帮助,所以我会尽我所能……

你要做的是所谓的alpha合成.您可以在维基百科上阅读here,在OpenCV文档中阅读here.

我选择的工具是ImageMagick,它是免费的,具有Perl,Python,C/C++绑定以及命令行工具.如果我从这张照片开始(face.jpg):

并带上您的glasses.jpg文件并将其转换为具有透明度的PNG,如下所示:

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

composite glasses.png face.jpg out.jpg

我明白了

似乎OpenCV可能存在透明问题,并且提供了一个解决方案here.如果您想在该帖子中尝试@ypnos建议的屏蔽方法,我已经为您提供了必要的输入文件,您可以从我的网站下载它们:

glasses.png with alpha channel

input-mask.png

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读