java - 使用 OpenImaj 进行 Java 人脸检测
问题描述
我正在尝试实现一个检查 png 图像是否包含人脸的功能。我正在尝试使用 OpenImaj 并注意到它有 4 个检测器(Identity、Haar 等)
感谢是否有人可以分享相关的代码片段
解决方案
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.openimaj.image.DisplayUtilities;
import org.openimaj.image.FImage;
import org.openimaj.image.ImageUtilities;
import org.openimaj.image.MBFImage;
import org.openimaj.image.colour.RGBColour;
import org.openimaj.image.colour.Transforms;
import org.openimaj.image.processing.face.detection.DetectedFace;
import org.openimaj.image.processing.face.detection.FaceDetector;
import org.openimaj.image.processing.face.detection.HaarCascadeDetector;
import org.openimaj.math.geometry.shape.Rectangle;
public class App {
public static void main(String[] args) throws Exception, IOException {
final MBFImage image = ImageUtilities.readMBF(new File("d:\\java\\face\\bin.jpeg"));
FaceDetector<DetectedFace, FImage> fd = new HaarCascadeDetector(200);
List<DetectedFace> faces = fd.detectFaces(Transforms.calculateIntensity(image));
System.out.println("# Found faces, one per line.");
System.out.println("# <x>, <y>, <width>, <height>");
for (Iterator<DetectedFace> iterator = faces.iterator(); iterator.hasNext();) {
DetectedFace face = iterator.next();
Rectangle bounds = face.getBounds();
image.drawShape(face.getBounds(), RGBColour.RED);
// System.out.println(bounds.x + ";" + bounds.y + ";" + bounds.width + ";" +
// bounds.height);
}
DisplayUtilities.display(image);
}
}
推荐阅读
- java - 代码:12500,消息:12500 未以任何方式解决
- node.js - Nodej.s 路由与 express.js 和 TypeScript
- html - 没有在域上添加 www 不显示博客?
- excel - 如何使用范围变量引用工作范围右侧的范围 1 列?
- c# - 通过 Invoke-Command 使用域用户连接到 SQL Server
- multiprocessing - 并行使用 joblib 时出现多个 tqdm 进度条
- python - 在 Python 中只允许通过正则表达式选择的字符串
- javascript - 如何纠正:“不要使用钥匙,不要使用钥匙,例如,不使用钥匙。”?
- java - Spring Data Jpa - 类型规范
已弃用 - multithreading - 隐式执行多线程?