带有jdk 1.8 FaceDetect错误的opencv3.3.1

问题描述

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 (将#修改为@)