基于 javacv 的人脸识别和图片内容审核方案
作者:WYT
- 2023-11-15 北京
本文字数:1427 字
阅读完需:约 5 分钟
1、人脸识别方案
2、上传图片内容审查方案
3、最近做一个创业团队项目,人脸识别方案使用的是开源方案,踩了一些坑,尤其是加载模型文件的时候路径问题,项目采用 spring boot,放在 resources 下面加载人脸识别模型文件会找不到,暂时放到了程序包中,代码如下:
/**
* 人脸检测
*/
@Slf4j
@Configuration
public class FaceDetectUtil {
//放在resource下面不生效
private static CascadeClassifier faceCascade = new CascadeClassifier("/haarcascade_frontalface_default.xml");
/**
* 检查是否有人脸
* @param imgUrl
* @return
*/
public boolean checkFace(String imgUrl){
try {
URL url = new URL(imgUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.connect();
InputStream is = conn.getInputStream();
byte[] data = new byte[is.available()];
is.read(data);
// Read the image into a Mat using OpenCV
Mat image = opencv_imgcodecs.imdecode(new Mat(data), Imgcodecs.IMREAD_UNCHANGED);
Mat grayImage = new Mat();
opencv_imgproc.cvtColor(image, grayImage, opencv_imgproc.COLOR_BGR2GRAY);
// 进行人脸检测
RectVector faces = new RectVector();
faceCascade.detectMultiScale(grayImage, faces);
// 判断是否检测到人脸
if (faces.size() > 0) {
return true;
} else {
return false;
}
} catch (Exception e) {
log.error("error", e);
}
return true;
}
/**
* 是否来源于网络图片
* @param imagePath
* @return
*/
public static boolean isInternetImage(String imagePath) {
try {
// 使用Apache Tika解析图像文件的元数据
URL url = new URL(imagePath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.connect();
InputStream inputStream = conn.getInputStream();
Parser parser = new AutoDetectParser();
ContentHandler textHandler = new ToTextContentHandler();
Metadata metadata = new Metadata();
parser.parse(inputStream, textHandler, metadata, new ParseContext());
// 检查元数据中是否包含关于图像来源的信息
String sourceInformation = metadata.get("Image Source");
if (sourceInformation != null && sourceInformation.toLowerCase().contains("internet")) {
return true;
}
inputStream.close();
} catch (Exception e) {
log.error("error", e);
}
return false;
}
}
复制代码
有哪位做过类似的需求,如果有什么好的方案可以在评论区回复一下,感谢!
划线
评论
复制
发布于: 刚刚阅读数: 4
WYT
关注
还未添加个人签名 2019-12-06 加入
还未添加个人简介
评论