无法在这个位置找到: head2.htm
当前位置: 建站首页 > 团队介绍 >

嘉定企业官网建设企业—Unity+OpenCV实现人物抠图

时间:2021-01-30 01:50来源:未知 作者:嘉定企业网站建设 点击:
工程项目新项目最新项目版本号号号及表明Unity2018.3.10f1,我以前一直是5.6.3开发设计设计方案设计方案计划方案,5.6.3仿佛适配难题这一opencv 提议升級到2018之上的版本号号号,不然升級

工程项目新项目版本号号及说明

Unity2018.3.10f1,我之前一直是5.6.3开发设计设计方案,5.6.3好像兼容问题这一opencv 建议升级到2018以上的版本号号,否则升级可能会出难点
这一抠图Demo为我想上年三月29做的检验最新项目,后面被应用为某KTV里面抠像演唱的最新项目 这儿只放我的检验最新项目
之前在简书发的文章内容內容:应用OpenCVsharp 抠出拍攝头下的人(1)

工程项目新项目demo说明

由于它就是我马上在OpenCVDemo里面马上做的,因而有一个Demo便是我改动的,别的理应都是他的案例Demo,我做的人物角色抠图Demo的相对性相对路径为Assets\OpenCV+Unity\Demo\Face_Detector
每一个Demo的重要编号唯一一个脚本制作制作,都是demo文本文档夹融新场景放进一起了。

抠图重要编号

demo的脚本制作制作全名是FaceDetectorScene 完全免费免费下载了工程项目新项目的可以马上去看看看这一脚本制作制作 在这其中他的重要为OpenCvSharp 这一库,很多涵数都是这一库里面 可以马上开启OpenCV写好的提升优化算法,十分方便快捷。
[标识:內容1]

以下为我的抠图重要编号,唯一片段,全篇马上免费下载我的工程项目新项目。(由于工程项目新项目是去年三月份做的,因而我快忘得相近了。因而请忽略掉没有文字描述的注释,那时候检验具体实际效果状况下要的一些检验相片倘若你需要看具体实际效果的话可以开启这类相片)

#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 (!save)
 save = true;
 saveMat = finalMat;
 //应用一个变量的运作运行内存房间内室内空间不断储存mat转换成Tex2D的相片
 saveTex2D = Unity.MatToTexture(finalMat, saveTex2D);
 saveImg.texture = saveTex2D;
 //saveImg.texture = Unity.MatToTexture(savemat,(Texture2D)saveImg.texture);
 //原始图的灰度值值图(1参)和存储图的灰度值值图(2参) 相减后的图(偏差图)偏差结果图为一个新的空图
 Cv2.Absdiff(finalMat, saveMat, diffmat);
 //显示信息信息内容偏差图
 diffTex2D = Unity.MatToTexture(diffmat, diffTex2D);
 diff.texture = diffTex2D;
 //偏差图高斯函数涵数模糊不清不清,第一个参为务必模糊不清不清的图,第二个参为模糊不清不清后的图,
 //第三个参为高斯函数涵数模糊不清不清的范围(可变性性关键主要参数),第四第五个关键主要参数为高斯函数涵数模糊不清不清范围的偏差(可变性性关键主要参数||0)
 Cv2.GaussianBlur(diffmat, diffmat, size, sigmaX, sigmaY);
 //将高斯函数涵数模糊不清不清后的偏差图二值化 第一个关键主要参数为阀值(可变性性关键主要参数),第二个关键主要参数为二值化的很大值,
 //第三个关键主要参数为二值化的类型
 diffmat = diffmat.Threshold(thresh, maxval, ThresholdTypes.Binary);
 //显示信息信息内容经历灰度值值,偏差,高斯函数涵数模糊不清不清后的二值图
 //把二值图膨涨 第一个参为务必膨涨的图,第二个参为膨涨后的图,第三个参是原素类型
 //第四个关键主要参数填null ,第五个是膨涨次数(可变性性关键主要参数)
 Cv2.Dilate(diffmat, diffmat, null, null, time, BorderTypes.Constant);
 finalTex2D = Unity.MatToTexture(diffmat, finalTex2D);
 finalImg.texture = finalTex2D;
 //应用经历灰度值值,偏差,高斯函数涵数模糊不清不清后的二值图再膨涨后的图 找轮廊
 //第一个关键主要参数为务必找的图,第二个关键主要参数为空数据动能数字能量数组,涵数开展以后out出值,第三个关键主要参数和第二个一样
 //第四个关键主要参数为务必的轮廊类型(百度搜索检索) 第五个关键主要参数为轮廊相近方法(百度搜索检索)
 Cv2.FindContours(diffmat, out points, out hierarchyIndices,
 RetrievalModes.External, ContourApproximationModes.ApproxNone);
 //创建一个蒙版 第一个关键主要参数是找轮廊的图的size,第二个关键主要参数是相片的类型,第三个关键主要参数是相片的色彩
 Mat hole = new Mat(diffmat.Size(), MatType.CV_8UC3, new Scalar(0, 0, 0, 0));
 //Debug.Log(diffmat.Size());
 //分析xml所有轮廊进行添充里面的内容
 for (int i = 0; i hierarchyIndices.Length; i++)
 //添充轮廊里面的内容 第一个关键主要参数为刚创建的蒙板图,第二个关键主要参数为out出来的点的数据动能数字能量数组
 //第三个关键主要参数是循环系统系统软件数,第四个关键主要参数为要添充的色彩,第五个关键主要参数为画线的总宽(-1就是添充)
 //后面3个关键主要参数不用修改
 Cv2.DrawContours(
 hole, points, i, Scalar.All(255), -1);
 //创建一个原照的团本(百度搜索检索抄的 模糊不清白这一步)
 Mat crop = new Mat(colorMat.Rows, colorMat.Cols, MatType.CV_8UC3,new Scalar(0,255,0));
 //把膨涨后的图腐蚀掉膨涨具体实际效果(去白边)
 Cv2.Erode(hole, erodeMat, null, null, erodeTime);
 //把膨涨后的图制图到RawImage上
 erodeTex2D = Unity.MatToTexture(erodeMat, erodeTex2D);
 erodeImg.texture = erodeTex2D;
 //显示信息信息内容蒙板图
 maskTex2D = Unity.MatToTexture(erodeMat, maskTex2D);
 //Debug.Log(crop.Size());
 mask.texture = maskTex2D;
 //将原照拷贝到蒙版镀层,用原照.出copyto方法,第一个参为不久创建的原照团本,第二个关键主要参数为蒙版
 colorMat.CopyTo(crop, erodeMat);
 //将最终抠出来的人物角色图显示信息信息内容在显示信息屏上
 //colorTex2D = Unity.MatToTexture(crop, colorTex2D);
 //colorImg.texture = colorTex2D;
 #endregion
Demo运用说明

1.提早提前准备一个拍攝头
2.打开FaceDetectorScene这一场景
3.明确抠图总体目标active为true
4.运行demo
5.弹出来来提示框点一下右侧功能键
6.由于我开过抠图的shader因而会自动式扣掉灰灰黑色的状况(灰灰黑色衣服裤子牛仔裤子和秀发也会被扣)
7.拍攝头偏向静态数据数据信息状况
8.点一下一下koutu总体目标上FaceDetectorScene脚本制作制作中的save功能键
这一功能键会将你现如今的状况相片存储和新拍摄的相片进行核查之后抠图
9.进行以上步骤之后便可以见到具体实际效果(明显强烈推荐运用外接拍攝头)
以下为我运用了手记本拍攝头后抠图的具体实际效果
由于我穿的是灰衣服裤子加上用的是手记本拍攝头 因而具体实际效果其实不是是非非常好,倘若用外接拍攝头加上纯色静态数据数据信息状况则可以保证十分好的具体实际效果,根据现场规范你要能够调节脚本制作制作上的一些特点来保证比较完美的具体实际效果。

工程项目新项目详尽详细地址

本要想蓝奏云传工程项目新项目的。。意想不到很大文本文档规格为100M
仅有用百度搜索检索云了,倘若大家有更强的递交资源的百度搜索云盘可以私信我

Unity+OpenCV进行人物角色抠图功效
获得码:alsp

互连网新闻媒体互动交流沟通交流生产制造制造行业沟通交流沟通交流群营销推广营销推广

QQ群号码码:139077032
这一群为csdn爱思考的小猴大佬建的,我那时候刚新手入门经常常看这名大佬的blog。大家同行业业有兴趣爱好喜好的话可以进群沟通交流沟通交流共享资源
后面有时候间的话会升級之前干了的一些功效的(离我以前升級blog时间已过整整的的一年)

shader方面

shader就挂载在koutu总体目标的原材料球上,有兴趣爱好喜好的可以本身看一下
把灰灰黑色给改为透明而已(其实不就是我写的 在网络上找的目前的)

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
无法在这个位置找到: ajaxfeedback.htm
栏目列表
推荐内容


扫描二维码分享到微信