OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 4490|回复: 2

给人脸带面具,Bgra和Bgr的问题

[复制链接]
发表于 2010-4-1 15:59:22 | 显示全部楼层 |阅读模式
本人想实现如下功能:
从摄像头获取一帧图片,检测出人脸的区域,将人脸的区域用一副图片(如一个面具)替换掉,如附件1图片所示:


从摄像头获取一帧图片用的是capture.QueryFrame(),返回类型为Image<Bgr,byte>,没有alpha通道,不透明。
而欲贴上的图片应该是透明的,必须是Image<Bgra,byte>类型,否则脸谱的四周会出现不想要的边框。
目前已尝试的做法是:
将欲贴的Bgra图像转化为Brg图像,逐个像素点地进行替换,问题是Bgra转化成Brg的时候,用的是Image<Brga,byte>.Convert<Bgr,byte>()出现如附件2图片的情况:


即出现黑边,也不能实现目标。
如果不转化,类型不同也无法进行像素复制,也不能用Cvcopy等方法。

请求知情者解答,非常感谢!
回复

使用道具 举报

发表于 2010-4-1 20:36:45 | 显示全部楼层

给人脸带面具,Bgra和Bgr的问题

知道了目标的位置之后,那么通过2个for循环,将面具的非白色像素逐一复制到目标区域。
楼主试试这个思路。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-8 09:24:51 | 显示全部楼层

给人脸带面具,Bgra和Bgr的问题

I found a solution myself.Make new Bgr pixels,which B,G,R equals these of the Bgra ones.Then replace the pixels of the Bgr image with these new pixels,It\'s simple.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-3 10:56 , Processed in 0.010659 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表