无法使用自定义 Haar 级联分类器检测对象

问题描述

我正在开发一个 OpenCV java 项目,该项目可从图像中检测刚性容器。我对使用 Cascade Trainer GUI 工具自定义 Haar Cascade Classifier 非常陌生。我只在 p 文件夹中添加了 50 张钢丝容器刚性照片,在 n 文件夹中添加了 200 张其他照片。生成 Haar Cascade Classifier XML 文件后,我使用 xml 文件运行了 java 代码,但它没有检测到图像上的电线容器。我使用 Haar Cascade Classifier xml 文件进行人脸检测测试,它可以工作,但不适用于电线容器。难道我做错了什么?请坚持。

这是我试图检测的电线容器的示例照片。

Wire Container

这是我使用的代码

公共类 DetectContainerDemo {

public static void main(String[] args) {
     System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
            System.out.println("\nRunning Detect containers Demo");

            CascadeClassifier contDetector = new CascadeClassifier("data_files//cascade.xml");
            Mat image = Imgcodecs.imread("target//testcont2.jpg");
                            
            // Detect Container in the image.
            // MatOfRect is a special container class for Rect.
            MatOfRect contDetections = new MatOfRect();
            contDetector.detectMultiScale(image,contDetections);

            System.out.println(String.format("Detected %s containers",contDetections.toArray().length));

            // Draw a bounding Box around the container.
            for (Rect rect : contDetections.toArray()) {
                Imgproc.rectangle(image,new Point(rect.x,rect.y),new Point(rect.x + rect.width,rect.y + rect.height),new Scalar(0,255,0));               
            }              
            BufferedImage meh = (BufferedImage) HighGui.toBufferedImage(image);
            
            //HighGui.toBufferedImage(m)
            File output = new File("target\\test1.png");
            
            try {
                ImageIO.write(meh,"png",output);
            } catch (IOException e) {
                // Todo Auto-generated catch block
                e.printstacktrace();
            }
}

}

请让我知道这是否可行,或者我做错了。上面的代码几乎加载了 xml 文件并使用 Opencv 库中的 detectMultiScale 方法检测对象。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...