diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2016-09-17 16:11:44 +0200 | 
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2016-09-17 16:20:20 +0200 | 
| commit | 159ccb4bca654acdb101cfa1fd3491d1f7964743 (patch) | |
| tree | 193812dcd731de102271237904055fba970792e7 /tracker-pt | |
| parent | c7215393794b7a901cfcca22c9afe200f5bb959e (diff) | |
tracker/{pt,aruco}: enable camera dialog
Suggested-by: MathijsG
Issue: #454
Diffstat (limited to 'tracker-pt')
| -rw-r--r-- | tracker-pt/FTNoIR_PT_Controls.ui | 174 | ||||
| -rw-r--r-- | tracker-pt/ftnoir_tracker_pt_dialog.cpp | 39 | ||||
| -rw-r--r-- | tracker-pt/ftnoir_tracker_pt_dialog.h | 3 | 
3 files changed, 147 insertions, 69 deletions
diff --git a/tracker-pt/FTNoIR_PT_Controls.ui b/tracker-pt/FTNoIR_PT_Controls.ui index 2675f1a4..02eb05fb 100644 --- a/tracker-pt/FTNoIR_PT_Controls.ui +++ b/tracker-pt/FTNoIR_PT_Controls.ui @@ -10,7 +10,7 @@      <x>0</x>      <y>0</y>      <width>424</width> -    <height>568</height> +    <height>586</height>     </rect>    </property>    <property name="sizePolicy"> @@ -67,24 +67,37 @@            <string>Camera settings</string>           </property>           <layout class="QGridLayout" name="gridLayout_2"> -          <item row="3" column="0"> -           <widget class="QLabel" name="label_37"> +          <item row="0" column="1"> +           <widget class="QComboBox" name="camdevice_combo">              <property name="sizePolicy"> -             <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> +             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">                <horstretch>0</horstretch>                <verstretch>0</verstretch>               </sizepolicy>              </property> -            <property name="text"> -             <string>FPS</string> +            <property name="minimumContentsLength"> +             <number>10</number>              </property> -            <property name="buddy"> -             <cstring>fps_spin</cstring> +           </widget> +          </item> +          <item row="4" column="1"> +           <widget class="QSpinBox" name="fov"> +            <property name="suffix"> +             <string>°</string> +            </property> +            <property name="prefix"> +             <string/> +            </property> +            <property name="minimum"> +             <number>10</number> +            </property> +            <property name="maximum"> +             <number>90</number>              </property>             </widget>            </item> -          <item row="1" column="0"> -           <widget class="QLabel" name="label_36"> +          <item row="4" column="0"> +           <widget class="QLabel" name="label_4">              <property name="sizePolicy">               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">                <horstretch>0</horstretch> @@ -92,12 +105,12 @@               </sizepolicy>              </property>              <property name="text"> -             <string>Width</string> +             <string>Diagonal field of view</string>              </property>             </widget>            </item> -          <item row="4" column="0"> -           <widget class="QLabel" name="label_4"> +          <item row="1" column="0"> +           <widget class="QLabel" name="label_36">              <property name="sizePolicy">               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">                <horstretch>0</horstretch> @@ -105,23 +118,23 @@               </sizepolicy>              </property>              <property name="text"> -             <string>Diagonal field of view</string> +             <string>Width</string>              </property>             </widget>            </item> -          <item row="4" column="1"> -           <widget class="QSpinBox" name="fov"> -            <property name="suffix"> -             <string>°</string> -            </property> -            <property name="prefix"> -             <string/> +          <item row="3" column="0"> +           <widget class="QLabel" name="label_37"> +            <property name="sizePolicy"> +             <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> +              <horstretch>0</horstretch> +              <verstretch>0</verstretch> +             </sizepolicy>              </property> -            <property name="minimum"> -             <number>10</number> +            <property name="text"> +             <string>FPS</string>              </property> -            <property name="maximum"> -             <number>90</number> +            <property name="buddy"> +             <cstring>fps_spin</cstring>              </property>             </widget>            </item> @@ -180,29 +193,25 @@              </property>             </widget>            </item> -          <item row="5" column="0"> -           <widget class="QLabel" name="label_5"> +          <item row="1" column="1"> +           <widget class="QSpinBox" name="res_x_spin">              <property name="sizePolicy"> -             <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> +             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">                <horstretch>0</horstretch>                <verstretch>0</verstretch>               </sizepolicy>              </property> -            <property name="text"> -             <string>Dynamic pose resolution</string> +            <property name="toolTip"> +             <string>Desired capture width</string>              </property> -           </widget> -          </item> -          <item row="6" column="1"> -           <widget class="QSpinBox" name="init_phase_timeout">              <property name="suffix"> -             <string> ms</string> -            </property> -            <property name="minimum"> -             <number>1</number> +             <string> px</string>              </property>              <property name="maximum"> -             <number>10000</number> +             <number>2000</number> +            </property> +            <property name="singleStep"> +             <number>10</number>              </property>             </widget>            </item> @@ -219,25 +228,29 @@              </property>             </widget>            </item> -          <item row="1" column="1"> -           <widget class="QSpinBox" name="res_x_spin"> +          <item row="6" column="1"> +           <widget class="QSpinBox" name="init_phase_timeout"> +            <property name="suffix"> +             <string> ms</string> +            </property> +            <property name="minimum"> +             <number>1</number> +            </property> +            <property name="maximum"> +             <number>10000</number> +            </property> +           </widget> +          </item> +          <item row="5" column="0"> +           <widget class="QLabel" name="label_5">              <property name="sizePolicy"> -             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> +             <sizepolicy hsizetype="Expanding" vsizetype="Preferred">                <horstretch>0</horstretch>                <verstretch>0</verstretch>               </sizepolicy>              </property> -            <property name="toolTip"> -             <string>Desired capture width</string> -            </property> -            <property name="suffix"> -             <string> px</string> -            </property> -            <property name="maximum"> -             <number>2000</number> -            </property> -            <property name="singleStep"> -             <number>10</number> +            <property name="text"> +             <string>Dynamic pose resolution</string>              </property>             </widget>            </item> @@ -257,16 +270,23 @@              </property>             </widget>            </item> -          <item row="0" column="1"> -           <widget class="QComboBox" name="camdevice_combo"> +          <item row="7" column="1"> +           <widget class="QPushButton" name="camera_settings">              <property name="sizePolicy"> -             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> +             <sizepolicy hsizetype="Preferred" vsizetype="Maximum">                <horstretch>0</horstretch>                <verstretch>0</verstretch>               </sizepolicy>              </property> -            <property name="minimumContentsLength"> -             <number>10</number> +            <property name="text"> +             <string>Open</string> +            </property> +           </widget> +          </item> +          <item row="7" column="0"> +           <widget class="QLabel" name="label_9"> +            <property name="text"> +             <string>Camera settings (when available)</string>              </property>             </widget>            </item> @@ -1104,8 +1124,14 @@       </widget>      </widget>     </item> -   <item row="1" column="0"> +   <item row="2" column="0">      <widget class="QGroupBox" name="groupBox_5"> +     <property name="sizePolicy"> +      <sizepolicy hsizetype="Preferred" vsizetype="Maximum"> +       <horstretch>0</horstretch> +       <verstretch>0</verstretch> +      </sizepolicy> +     </property>       <property name="title">        <string>Status</string>       </property> @@ -1117,13 +1143,6 @@          </property>         </widget>        </item> -      <item row="2" column="1"> -       <widget class="QDialogButtonBox" name="buttonBox"> -        <property name="standardButtons"> -         <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> -        </property> -       </widget> -      </item>        <item row="0" column="0">         <widget class="QLabel" name="label_38">          <property name="text"> @@ -1166,6 +1185,29 @@       </layout>      </widget>     </item> +   <item row="1" column="0"> +    <spacer name="verticalSpacer"> +     <property name="orientation"> +      <enum>Qt::Vertical</enum> +     </property> +     <property name="sizeType"> +      <enum>QSizePolicy::MinimumExpanding</enum> +     </property> +     <property name="sizeHint" stdset="0"> +      <size> +       <width>20</width> +       <height>0</height> +      </size> +     </property> +    </spacer> +   </item> +   <item row="3" column="0"> +    <widget class="QDialogButtonBox" name="buttonBox"> +     <property name="standardButtons"> +      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> +     </property> +    </widget> +   </item>    </layout>   </widget>   <tabstops> diff --git a/tracker-pt/ftnoir_tracker_pt_dialog.cpp b/tracker-pt/ftnoir_tracker_pt_dialog.cpp index 4e1df41b..c722e9a7 100644 --- a/tracker-pt/ftnoir_tracker_pt_dialog.cpp +++ b/tracker-pt/ftnoir_tracker_pt_dialog.cpp @@ -7,6 +7,7 @@   */  #include "ftnoir_tracker_pt_dialog.h" +#include "cv/video-property-page.hpp"  #include "compat/camera-names.hpp"  #include <opencv2/core/core.hpp> @@ -71,6 +72,10 @@ TrackerDialog_PT::TrackerDialog_PT()      connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));      connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel())); +    connect(ui.camdevice_combo, &QComboBox::currentTextChanged, this, &TrackerDialog_PT::set_camera_settings_available); +    set_camera_settings_available(ui.camdevice_combo->currentText()); +    connect(ui.camera_settings, &QPushButton::clicked, this, &TrackerDialog_PT::show_camera_settings); +      connect(&timer,SIGNAL(timeout()), this,SLOT(poll_tracker_info()));      timer.start(250); @@ -97,9 +102,9 @@ void TrackerDialog_PT::startstop_trans_calib(bool start)          trans_calib_running = false;          {              auto tmp = trans_calib.get_estimate(); -            s.t_MH_x = tmp[0]; -            s.t_MH_y = tmp[1]; -            s.t_MH_z = tmp[2]; +            s.t_MH_x = int(tmp[0]); +            s.t_MH_y = int(tmp[1]); +            s.t_MH_z = int(tmp[2]);          }      }      ui.tx_spin->setEnabled(!start); @@ -144,6 +149,34 @@ void TrackerDialog_PT::poll_tracker_info()      }  } +void TrackerDialog_PT::set_camera_settings_available(const QString& camera_name) +{ +#ifdef _WIN32 +    const bool avail = camera_name != QStringLiteral("PS3Eye Camera"); +    ui.camera_settings->setEnabled(avail); +#elif defined(__linux) +    (void)camera_name; +#else +    (void)camera_name; +    ui.camera_settings->setEnabled(false); +#endif +} + +void TrackerDialog_PT::show_camera_settings() +{ +    const int idx = ui.camdevice_combo->currentIndex(); +    if (tracker) +    { +        cv::VideoCapture* cap = tracker->camera; +        if (cap && cap->isOpened()) +        { +            video_property_page::show_from_capture(*cap, idx); +        } +    } +    else +        video_property_page::show(idx); +} +  void TrackerDialog_PT::trans_calib_step()  {      if (tracker) diff --git a/tracker-pt/ftnoir_tracker_pt_dialog.h b/tracker-pt/ftnoir_tracker_pt_dialog.h index b57e32c3..b5adea51 100644 --- a/tracker-pt/ftnoir_tracker_pt_dialog.h +++ b/tracker-pt/ftnoir_tracker_pt_dialog.h @@ -32,6 +32,9 @@ public slots:      void startstop_trans_calib(bool start);      void trans_calib_step();      void poll_tracker_info(); +    void set_camera_settings_available(const QString& camera_name); +    void show_camera_settings(); +  private:      settings_pt s;      Tracker_PT* tracker;  | 
