opencv cascade.xml 格式
opencv cascade.xml format
我刚刚使用 opencv_traincascade.exe (opencv 2.4.11 (vc10)) cascade.xml文件。
然后,当我尝试在 javacv 0.8(和 1.0) 中使用它时,我收到此错误:
OpenCV Error: Unspecified error (The node does not represent a user object (unknown type?))
in cvRead, file ..\..\..\..\opencv\modules\core\src\persistence.cpp, line 4991
Exception in thread "main" java.lang.RuntimeException:
..\..\..\..\opencv\modules\core\src\persistence.cpp:4991: error: (-2) The node does not represent a user object (unknown type?) in function cvRead
Windows PATH 变量查找文件夹,其中包含我的 opencv_traincascade.exe。所以我尝试通过库使用 cacade.xml ,它成功了。
我还有一个 cascade.xml,效果很好。我发现级联之间的区别:
工作:
<opencv_storage>
<haarcascade_frontalface_default type_id="opencv-haar-classifier">
<size>24 24</size>
<stages>
<trees>
... some tags for one stage
</trees>
</stages>
</haarcascade_frontalface_default>
</opencv_storage>
不工作:
<opencv_storage>
<cascade>
<stageType>BOOST</stageType>
<featureType>HAAR</featureType>
<height>20</height>
<width>20</width>
<stageParams>
<boostType>GAB</boostType>
<minHitRate>9.9000000953674316e-001</minHitRate>
<maxFalseAlarm>4.0000000596046448e-001</maxFalseAlarm>
<weightTrimRate>9.4999999999999996e-001</weightTrimRate>
<maxDepth>1</maxDepth>
<maxWeakCount>100</maxWeakCount>
</stageParams>
<featureParams>
<maxCatCount>0</maxCatCount>
<featSize>1</featSize>
<mode>ALL</mode>
</featureParams>
<stageNum>16</stageNum>
<stages>
<!-- stage 0 -->
<_>
<maxWeakCount>1</maxWeakCount>
<stageThreshold>1.</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 1 -2.3408320546150208e-001</internalNodes>
<leafValues>
1. -1.</leafValues></_></weakClassifiers></_>
<!-- stage 1 -->
.... //16 stages
<features>
.... // a lot of "rect" tags
</features>
</cascade>
</opencv_storage>
大家可以看出,结构是不一样的。我猜,这就是错误的原因。
我做错了什么?如何使用我的 cascade.xml?
是的,问题是我使用了 javacv 方法,它使用旧的级联 xml 格式。
使用 c++ - 一切正常。
谢谢你,贝拉克!
我刚刚使用 opencv_traincascade.exe (opencv 2.4.11 (vc10)) cascade.xml文件。
然后,当我尝试在 javacv 0.8(和 1.0) 中使用它时,我收到此错误:
OpenCV Error: Unspecified error (The node does not represent a user object (unknown type?))
in cvRead, file ..\..\..\..\opencv\modules\core\src\persistence.cpp, line 4991
Exception in thread "main" java.lang.RuntimeException:
..\..\..\..\opencv\modules\core\src\persistence.cpp:4991: error: (-2) The node does not represent a user object (unknown type?) in function cvRead
Windows PATH 变量查找文件夹,其中包含我的 opencv_traincascade.exe。所以我尝试通过库使用 cacade.xml ,它成功了。
我还有一个 cascade.xml,效果很好。我发现级联之间的区别:
工作:
<opencv_storage>
<haarcascade_frontalface_default type_id="opencv-haar-classifier">
<size>24 24</size>
<stages>
<trees>
... some tags for one stage
</trees>
</stages>
</haarcascade_frontalface_default>
</opencv_storage>
不工作:
<opencv_storage>
<cascade>
<stageType>BOOST</stageType>
<featureType>HAAR</featureType>
<height>20</height>
<width>20</width>
<stageParams>
<boostType>GAB</boostType>
<minHitRate>9.9000000953674316e-001</minHitRate>
<maxFalseAlarm>4.0000000596046448e-001</maxFalseAlarm>
<weightTrimRate>9.4999999999999996e-001</weightTrimRate>
<maxDepth>1</maxDepth>
<maxWeakCount>100</maxWeakCount>
</stageParams>
<featureParams>
<maxCatCount>0</maxCatCount>
<featSize>1</featSize>
<mode>ALL</mode>
</featureParams>
<stageNum>16</stageNum>
<stages>
<!-- stage 0 -->
<_>
<maxWeakCount>1</maxWeakCount>
<stageThreshold>1.</stageThreshold>
<weakClassifiers>
<_>
<internalNodes>
0 -1 1 -2.3408320546150208e-001</internalNodes>
<leafValues>
1. -1.</leafValues></_></weakClassifiers></_>
<!-- stage 1 -->
.... //16 stages
<features>
.... // a lot of "rect" tags
</features>
</cascade>
</opencv_storage>
大家可以看出,结构是不一样的。我猜,这就是错误的原因。
我做错了什么?如何使用我的 cascade.xml?
是的,问题是我使用了 javacv 方法,它使用旧的级联 xml 格式。 使用 c++ - 一切正常。 谢谢你,贝拉克!