如何在OpenCV中训练两个具有不同尺寸的对象
how to train two objects with different sizes in openCv
我尝试使用OpenCV版本2.4.10训练车牌和车牌摩托车。
我有一个235张图像阳性和300个负面图像。
对于正面图像,车牌车的实际尺寸为40厘米x 13厘米,车牌摩托车具有实际尺寸20 cm x 17 cm。当尝试分别训练向量时,该软件正常工作,但是当我尝试使用两个板训练时,该软件不起作用。
这是使用的培训守则。
此代码与车牌车使用,但与车牌摩托车无效
createsamples -info c:harrkitHAARKITV10povitivosinfo.txt -vec vetorveiculos_64x24.vec -num 235 -w 64 -h 24
trainCascade -data cascade -vec c:harrkitHAARKITV10vetorveiculos_64x24.vec -bg c:harrkitHAARKITV10negativosnegativos.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!");
}
由于这两种类型的板具有不同的纵横比,因此您可以尝试为每种类型训练另一个分类器。在纸上,这更准确。
您的问题可能来自 createsamples
h
之前缺少的负号尝试以下内容:
createsamples -info c:harrkitHAARKITV10povitivosinfo.txt -vec vetorveiculos_64x24.vec -num 235 -w 64 -h 24
它应该起作用,因为 createsamples
固定宽度和高度的阳性集合(64x64)。
您必须更改" H"answers" W"参数才能训练第二种类型的对象,这些参数可能会导致问题,尤其是当它们与对象的大小不匹配时。另外,您可以放置控制台吗,我们必须查看您的错误才能找出问题的起源!
相关文章:
- 如何返回一个类的两个对象相加的结果
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 为什么C++在将一个对象复制到另一个对象时需要对这两个对象进行低级常量限定
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何在Qt中连接来自不同窗口的两个对象?
- C++两个对象,其中包含指向同一数组不同部分的指针
- 为什么将两个对象分配给另一个对象后,两个对象不一样?
- C++:在另外两个对象之间共享一个对象
- 在单元测试中,如何在不使用 operator== 的情况下比较两个对象,这可能会错过新成员?
- 同一类的两个对象相互引用
- 将类对象传递给两个对象
- 如何调用运算符函数添加两个对象?
- 让一个名为A的类.传递以下两个对象有什么区别:(a)obj1和(b)obj1()
- 比较矢量迭代中的两个对象C
- 当我有两个对象时<<如何重载运算符?(有关系)
- 声明一个模板函数,将模板类友元的两个对象(仅)带到这两个专用化
- 使用指针将两个对象(每个都与一个类)相关联
- 比较类的两个对象之间的数据