问题描述
public Computer() {
System.out.println(Computer.class.getResource("haarcascade_frontalface_alt.xml").getPath().substring(1));
initComponents();
}
private DaemonThread myThread = null;
private VideoCapture webSource = null;
private final Mat frame = new Mat(1000,1000,1);
private final MatOfByte mem = new MatOfByte();
int count = 0;
CascadeClassifier faceDetector = new CascadeClassifier(Computer.class.getResource("haarcascade_frontalface_alt.xml").getPath().substring(1));
MatOfRect faceDetections = new MatOfRect();
private class DaemonThread implements Runnable {
protected volatile boolean runnable = false;
private JLabel display;
public DaemonThread(JLabel displayLabel) {
this.display = displayLabel;
}
@Override
public void run() {
synchronized (this) {
while (runnable) {
if (webSource.grab()) {
try {
webSource.retrieve(frame);
Graphics g = display.getGraphics();
//add
faceDetector.detectMultiScale(frame,faceDetections); //(Computer.java:73)
for (Rect rect : faceDetections.toArray()) {
// System.out.println("ttt");
Imgproc.rectangle(frame,new Point(rect.x,rect.y),new Point(rect.x + rect.width,rect.y + rect.height),new Scalar(0,255,0));
}
//
Imgcodecs.imencode(".bmp",frame,mem);
Image im = ImageIO.read(new ByteArrayInputStream(mem.toArray()));
BufferedImage buff = (BufferedImage) im;// buff = display
//buff = display
if (g.drawImage(buff,getWidth(),getHeight()-150,buff.getWidth(),buff.getHeight(),null)) {
if (runnable == false) {
System.out.println("Paused ..... ");
this.wait();
}
}
} catch (Exception e) {
System.out.println("Error!!");
e.printstacktrace();
}
}
}
}
}
}
///////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////////////////////////////////// /////////////////////////
在使用opencv制作FaceDetect时,我不断出错。
faceDetector.detectMultiScale(frame,faceDetections);
此区域有误。
CascadeClassifier faceDetector =新的CascadeClassifier(Computer.class.getResource(“ haarcascade_frontalface_alt.xml”)。getPath()。substring(1));
我是第一次单独学习Java和opencv,如果您能帮助我,我将不胜感激!
///////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////////////////////////////////// /////////////////////////
下面是错误的句子。
OpenCV错误:cv :: CascadeClassifier :: detectMultiScale,文件C:\ build \ master_winpack-bindings-win64-vc14-static \ opencv \ modules \ objdetect \ src \ cascadedetect.cpp中的断言失败(!empty()) ,第1698行 CvException [org.opencv.core.CvException:cv :: Exception:C:\ build \ master_winpack-bindings-win64-vc14-static \ opencv \ modules \ objdetect \ src \ cascadedetect.cpp:1698:错误:(-215)函数cv :: CascadeClassifier :: detectMultiScale中的!empty() ] 在org.opencv.objdetect.CascadeClassifier.detectMultiScale_1(本机方法) 在org.opencv.objdetect.CascadeClassifier.detectMultiScale(CascadeClassifier.java:162) 在test.Computer $ DaemonThread.run(Computer.java:73) 在java.lang.Thread.run(Thread.java:748)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)