Преобразование старого файла Haar xml в новый - PullRequest
0 голосов
/ 26 мая 2020

Я пытался запустить старый проект для обнаружения трафика c света с помощью Haar Cascade, но я заметил, что новая версия opencv использует новую структуру xml для классификатора Haar. Как я могу преобразовать старые файлы haar cascade xml с такой структурой:

<opencv_storage>
<myfacedetector type_id="opencv-haar-classifier">
  <size>
    32 48</size>
  <stages>
    <_>
      <trees>
        <_>
          <_>
            <feature>
              <rects>
                <_>
                  0 17 32 4 -1.</_>
                <_>
                  8 17 16 4 2.</_></rects>
              <tilted>0</tilted></feature>
            <threshold>-0.0218745097517967</threshold>
            <left_val>0.8975061178207398</left_val>
            <right_val>-0.7855733036994934</right_val></_></_>
        <_>
          <_>
            <feature>
              <rects>
                <_>
                  2 7 15 32 -1.</_>
                <_>
                  7 7 5 32 3.</_></rects>
              <tilted>0</tilted></feature>
            <threshold>-0.0305939596146345</threshold>
            <left_val>0.7952377796173096</left_val>
            <right_val>-0.4895249009132385</right_val></_></_>
        <_>
          <_>
            <feature>
              <rects>
                <_>
                  18 12 14 12 -1.</_>
                <_>
                  15 15 14 6 2.</_></rects>
              <tilted>1</tilted></feature>
            <threshold>-0.0268830899149179</threshold>
            <left_val>0.7531449794769287</left_val>
            <right_val>-0.3944652974605560</right_val></_></_>
        <_>
          <_>
            <feature>
              <rects>
                <_>
                  11 2 6 12 -1.</_>
                <_>
                  11 6 6 4 3.</_></rects>
              <tilted>0</tilted></feature>
            <threshold>-9.8022399470210075e-003</threshold>
            <left_val>0.6961730718612671</left_val>
            <right_val>-0.3479569852352142</right_val></_></_>
        <_>
          <_>
            <feature>
              <rects>
                <_>
                  3 11 6 13 -1.</_>
                <_>
                  5 11 2 13 3.</_></rects>
              <tilted>0</tilted></feature>
            <threshold>-5.3088441491127014e-003</threshold>
            <left_val>0.8113191723823547</left_val>
            <right_val>-0.2676127851009369</right_val></_></_></trees>
      <stage_threshold>-1.2062009572982788</stage_threshold>
      <parent>-1</parent>
      <next>-1</next></_>

в новую версию, которая выглядит примерно так:

<opencv_storage>
<cascade type_id="opencv-cascade-classifier"><stageType>BOOST</stageType>
  <featureType>HAAR</featureType>
  <height>20</height>
  <width>20</width>
  <stageParams>
    <maxWeakCount>93</maxWeakCount></stageParams>
  <featureParams>
    <maxCatCount>0</maxCatCount></featureParams>
  <stageNum>24</stageNum>
  <stages>
    <_>
      <maxWeakCount>6</maxWeakCount>
      <stageThreshold>-1.4562760591506958e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 0 1.2963959574699402e-01</internalNodes>
          <leafValues>
            -7.7304208278656006e-01 6.8350148200988770e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 1 -4.6326808631420135e-02</internalNodes>
          <leafValues>
            5.7352751493453979e-01 -4.9097689986228943e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 2 -1.6173090785741806e-02</internalNodes>
          <leafValues>
            6.0254341363906860e-01 -3.1610709428787231e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 3 -4.5828841626644135e-02</internalNodes>
          <leafValues>
            6.4177548885345459e-01 -1.5545040369033813e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 4 -5.3759619593620300e-02</internalNodes>
          <leafValues>
            5.4219317436218262e-01 -2.0480829477310181e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 5 3.4171190112829208e-02</internalNodes>
          <leafValues>
            -2.3388190567493439e-01 4.8410901427268982e-01</leafValues></_></weakClassifiers></_>

Или какая версия opencv может поддерживать старый вариант (это из проекта, который использовал opencv 2.4.4, но я не могу найти эту версию в Google)

...