人脸识别项目-Faced

黑灯瞎火自己摸了一个web+人脸识别项目,终于有了一点成果,web界面不怎么绚丽,记录一下.png

  1. 先look-one-look识别后的效果:
    在这里插入图片描述
  2. 还是先贴上项目的网址:
  1. 先把项目从Github上clone下来–>然后按照里面的requirement.txt的框架要求安装了3个依赖框架–>在当前用户下配置好环境变量[配置时注意要引用原PATH:FACED_HOME=/faced PATH=$FACED_HOME/bin:$PATH export FACED_HOME PATH],否则Linux的其他命令都会失效[若不小心操作失效,通过/usr/bin vim /etc/profile 改回来就OK],然后source /etc/profile让配置立即生效.
  2. 进入faced目录就可以执行faced命令啦~eg:faced --input xxx.png --save 后就会生成一个output.png文件,xdg-open output.png查看人脸识别后的图片
  3. 想借助前台web界面上传一张图片,后台识别完返回给web显示出来,这时候想到了脚本的方式,看我的另一篇博文:脚本 查看怎么使用脚本
  4. web端借助了struts框架来处理web提交的action事件(调用Linux系统脚本),贴上核心代码:
		//文件中转完成,开始执行脚本[若出错显示权限不足,先执行chmod 777 my.sh]
		String shpath="sh "+"/home/lhx/my.sh"; 
		Process ps = Runtime.getRuntime().exec(shpath); 
		try {
			//执行脚本子进程
			ps.waitFor();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
  1. 脚本执行结束后cp执行后的图片到关联的web项目就可以,贴上web的显示图片代码+脚本cp:
#!/usr/bin/expect
expect -c "
spawn su -
expect \":\"
send \"你的su密码\r\"
send \"cd /faced\r\"
send \"cp /home/lhx/Pictures/input.png /home/lhx/Workspaces/MyEclipse_2017_CI/Face/WebRoot/input.png\r\"
send \"faced --input /home/lhx/Pictures/input.png --save\r\"
send \"cp output.png /home/lhx/Workspaces/MyEclipse_2017_CI/Face/WebRoot/output.png\r\"
send \"xdg-open output.png\r\"
expect eof
"
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html>
<html>
<head>
	<title>Face Recognize</title>
	<!-- 图片预览的script -->
	<script type="text/javascript">
	    function imgPreview(fileDom){
	        //判断是否支持FileReader
	        if (window.FileReader) {
	            var reader = new FileReader();
	        } else {
	            alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
	        }
	
	        //获取文件
	        var file = fileDom.files[0];
	        var imageType = /^image\//;
	        //是否是图片
	        if (!imageType.test(file.type)) {
	            alert("请选择图片!");
	            return;
	        }
	        //读取完成
	        reader.onload = function(e) {
	            //获取图片dom
	            var img = document.getElementById("preview");
	            //图片路径设置为读取的图片
	            img.src = e.target.result;
	        };
	        reader.readAsDataURL(file);
	    }
	</script>
</head>
<body>
	<div class="div_input" style="float:left">
		<img id="preview" src="/Face/input.png"/>
	</div>
	<div class="div_button" style="float:left">
		<s:form action="face.action" method="post" enctype="multipart/form-data">
			<s:file name="file" onchange="imgPreview(this)" />
			<s:submit value="开始识别" />
		</s:form>
	</div>
	<div class="div_output" >
		<img src="/Face/output.png" alt="Picture Not Found"/>
	</div>
</body>
</html>
  1. org…初成的效果就这么多,再来一张效果图:
    人脸识别
  2. 遇到的问题:action中调用脚本,脚本没有执行;web项目中图片的路径不对导致图片无法显示(没有修改Tomcat中的xml时是不能用绝对路径的,web识别不了绝对路径);8080/8005/8009端口被占用,那就kill他们.
  3. 后期再把整个项目放到Github上,欢迎学习交流~~~

猜你喜欢

转载自blog.csdn.net/AwayFuture/article/details/84931874