基于OpenImaj的Java人脸检测
我正在尝试实现一个功能,检查png图像是否包含人脸。我正在尝试使用OpenImaj,并注意到它有4个检测器(Identity、Haar等) 如果任何人都可以共享相关的代码片段基于OpenImaj的Java人脸检测,java,opencv,image-processing,Java,Opencv,Image Processing,我正在尝试实现一个功能,检查png图像是否包含人脸。我正在尝试使用OpenImaj,并注意到它有4个检测器(Identity、Haar等) 如果任何人都可以共享相关的代码片段import java.io.File,我们将不胜感激; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import org.openimaj.image.DisplayUt
import java.io.File,我们将不胜感激;
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.io.IOException;
导入java.util.Iterator;
导入java.util.List;
导入org.openimaj.image.DisplayUtilities;
导入org.openimaj.image.FImage;
导入org.openimaj.image.ImageUtilities;
导入org.openimaj.image.MBFImage;
导入org.openimaj.image.color.RGBColour;
导入org.openimaj.image.color.Transforms;
导入org.openimaj.image.processing.face.detection.DetectedFace;
导入org.openimaj.image.processing.face.detection.FaceDetector;
导入org.openimaj.image.processing.face.detection.HaarCascadeDetector;
导入org.openimaj.math.geometry.shape.Rectangle;
公共类应用程序{
公共静态void main(字符串[]args)引发异常,IOException{
final MBFImage image=ImageUtilities.readMBF(新文件(“d:\\java\\face\\bin.jpeg”);
面部检测器fd=新的哈卡斯卡检测器(200);
列表面=fd.detectFaces(Transforms.calculateIntensity(image));
System.out.println(“#找到面,每行一个”);
System.out.println(“#,,”);
for(Iterator Iterator=faces.Iterator();Iterator.hasNext();){
DetectedFace=iterator.next();
矩形边界=face.getBounds();
drawShape(face.getBounds(),RGBColour.RED);
//System.out.println(bounds.x+”;“+bounds.y+”;“+bounds.width+”;”+
//边界(高度);
}
显示工具。显示(图像);
}
}
你的问题在Stackoverflow上是离题的,但你可以试着在Stackoverflow上提问,我想知道为什么会离题?是';t SOF是关于像我这样的常见问题的代码解决方案?这里有很多关于OpenCV人脸检测的帖子,为什么我不能询问不同的实现?“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,以及迄今为止为解决这一问题所做的工作。“-我相应地修改了问题,希望这种格式更适合我同意你的说法,即opencv受到了很多关注-但一个简单的搜索给了你这一点。另一个可能在搜索中被掩埋的是。我在电影中使用过它,通常是70%的准确度,如果阴影不好,可能是50%,但是对于直视的人来说是可以的。我不认为这另一个更好,你必须使用许多修复和技巧来达到90%以上-在一般情况下-不仅仅是一个家伙对他的网络摄像头说话