java - 如何在openCv中训练两个不同大小的物体

标签 java android c++ opencv

我尝试使用 OpenCv 2.4.10 版本训练车牌汽车和车牌摩托车。

我有 235 张正片图像和 300 张负片图像。

对于正面图像,牌照汽车的实际尺寸为 40 厘米 x 13 厘米,而牌照摩托车的实际尺寸为 20 厘米 x 17 厘米。 当尝试分别训练 vector 时,软件运行良好,但当我尝试使用两个板进行训练时,软件无法运行。

这里是使用的训练代码。

此代码适用于牌照汽车,但不适用于牌照摩托车

createsamples -info c:\harrkit\HAARKITV10\povitivos\info.txt -vec vetor\veiculos_64x24.vec -num 235 -w 64 -h 24
trainCascade -data cascade -vec c:\harrkit\HAARKITV10\vetor\veiculos_64x24.vec -bg c:\harrkit\HAARKITV10\negativos\negativos.txt -numPos 235 -numNeg 200 -numStages 12  -featureTyp HAAR -minHitRate 0.999 -maxFalseAlarmRate 0.5 -w 64 -h 24

//检测多尺度代码

if (mAbsolutePlateSize == 0) {
                int height = mGray.rows();
                if (Math.round(height * mRelativePlateSize) > 0) {
                    mAbsolutePlateSize = Math.round(height * mRelativePlateSize);
                }
                mNativeDetector.setMinFaceSize(mAbsolutePlateSize);
            }

            MatOfRect mMatPlacas = new MatOfRect();

            if (mDetectorType == JAVA_DETECTOR) {
                if (mJavaDetector != null)
                    mJavaDetector.detectMultiScale(mGray, mMatPlacas, 1.1, 2, 2, new Size(mAbsolutePlateSize, mAbsolutePlateSize), new Size()); 
            } else if (mDetectorType == NATIVE_DETECTOR) {
                if (mNativeDetector != null)
                    mNativeDetector.detect(mGray, mMatPlacas);
            } else {
                Log.e(TAG, "Detection method is not selected!");
            }

最佳答案

由于这两种类型的板具有不同的纵横比,您可以尝试为每种类型训练不同的分类器。在纸面上,这更准确。

关于java - 如何在openCv中训练两个不同大小的物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30080727/

相关文章:

java - Android:如何以编程方式登录网站并从中检索数据?

android - RxJava - 如何在取消订阅 observable 后继续后台任务

android - 在Android中获取屏幕宽度和高度

c++ - 使用 Visual Studio 2008 在 C++ 中实现逐次逼近算法的问题

c++ - 成员类应该如何访问成员函数?

java - 如何在ubuntu中的tomcat上运行一个网站?

java - 如何使用 Spring MVC、Spring Security 和 FreeMarker 在每个页面上显示用户名

c++ - 运算符链接在 C++ 中是如何发生的?

java - 如何在 Java 中从 URL 获取 json 数据而不丢失空格?

java - 识别唯一身份访问者,高级方法? (PHP/Java)