2015-07-30 2 views
2

Я только генерироваться с помощью opencv_traincascade.exe (OpenCV 2.4.11 (VC10)) cascade.xml файл.OpenCV формат 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 

переменной PATH Windows, смотрит в папку, которая состоит мой 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?

+1

«Что я делаю неправильно?» - вы используете javacv. как вы отметили, изменился каскадный формат, используемый в opencv, и устаревшие функции c-api, основанные на javacv, не могут читать более новый формат. – berak

+0

Благодарим за совет. Я попытаюсь использовать его не по javacv. Но я видел здесь https://github.com/bytedeco/javacv совместим с opencv 3.0 ... – kosbr

+0

@berak Мы также можем использовать C++ API из JavaCV, без проблем. –

ответ

0

Да, проблема заключалась в том, что я использовал методы javacv, которые используют старый формат cascade xml. Использование C++ - все работает. Спасибо, берик!

+0

Можете ли вы показать мне, как использовать C++ API для загрузки классификатора и обнаружения –

+0

Смотрите здесь: http://docs.opencv.org/doc/tutorials/ objdetect/cascade_classifier/cascade_classifier.html и Mat frame = imread ("C: \\ imgs \\ points.jpg", 0) использовать статическое изображение вместо видео – kosbr