Unity+OpenCV实现摄像头实时抠像功能

工程版本及说明

Unity2018.3.10f1,我之前一直是5.6.3开发,5.6.3好像不支持这个opencv 建议升级到2018以上的版本,不然升级可能会出问题
这个抠图Demo为我去年3月29做的测试项目,后面被应用为某KTV里面抠像唱歌的项目 这里只放我的测试项目
之前在简书发的文章:利用OpenCVsharp 抠出摄像头下的人(1)

工程demo说明

由于这是我直接在OpenCVDemo里面直接做的,所以有一个Demo是我改动的,别的应该都是他的案例Demo,我做的人物抠图Demo的路径为Assets\OpenCV+Unity\Demo\Face_Detector
每一个Demo的核心代码只有一个脚本,都在demo文件夹中和场景放在一起了。

抠像核心代码

demo的脚本名为FaceDetectorScene 下载了工程的可以直接去看这个脚本 其中他的核心为OpenCvSharp 这个库,很多函数都在这个库里面 可以直接调用OpenCV写好的算法,非常方便。
以下为我的抠像核心代码,只有片段,全篇请下载我的工程。(由于工程是去年3月份做的,所以我快忘得差不多了。所以请无视掉没有文字解释的注释,当初测试效果时候用的一些测试图片如果你想看效果的话可以开启这些图片)

#region 利用摄像头把人物抠出来
            // detect everything we're interested in
            processor.ProcessTexture(input, TextureParameters);

            // mark detected objects
            // processor.MarkDetected();
            // processor.Image now holds data we'd like to visualize
            output = Unity.MatToTexture(processor.Image, output);   // if output is valid texture it's buffer will be re-used, otherwise it will be re-created
            //没用的
            //Mat answer = Unity.TextureToMat(output);
            //摄像头拍到的原始图像赋值给finalMat
            finalMat = Unity.TextureToMat(output);
            //把原始图像转成灰度图
            finalMat = finalMat.CvtColor(ColorConversionCodes.BGR2GRAY);
            //摄像头拍到的原始图像赋值给colorMat
            colorMat = Unity.TextureToMat(output);
            //bool变量控制保存灰度图
            if (
  • 0
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值