希望疫情笼罩的日子尽早过去
因为疫情来的猛,公司内部为了监控员工健康码状态,要求系统自动识别,并且将情况通知到对应的人员进行后续跟踪。
运行环境和使用到的技术:ubuntu20、python3.9、opencv4.5、java8
基本思路:通过健康码图片色HSV彩分析技术得出结果
1.图片大小规整
2.拾取指定颜色值的范围截取图片
3.图片处理(灰度、二值、平滑、膨胀)
4.最大轮廓寻找
5.计算最大轮廓面积以及码形状的面积比得出结果
6.因为处理结果需要在java端执行,因此json格式化输出结果。
文章已迁移至UBGLOG
Java端主要是传递图片地址并调用脚本得到结果,通知指定人
Part1:
//脚本位置,健康码图片地址
String _regResult = CmdProcessUtils.invokePython("xxx/HeathCodeReg.py", localPath);
Part2:(calss CmdProcessUtils)
public synchronized static String invokePython(String pythonFile,String url){
if(org.apache.commons.lang3.StringUtils.isEmpty(url)){
return null;
}
try {
String pythonPath=pythonFile;
String[] args = new String[] { "python3", pythonPath, url};
Process proc = Runtime.getRuntime().exec(args);// 执行py文件
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
StringBuffer buffer=new StringBuffer();
while ((line = in.readLine()) != null) {
buffer.append(line);
}
in.close();
proc.waitFor();
return buffer.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Part3: (脚本)
详细见 :UBGLOG
愿病毒早日消亡!!!