工程版本及说明
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 (