summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2017-09-22 14:23:03 +0200
committerStanislaw Halik <sthalik@misaki.pl>2017-09-22 14:25:28 +0200
commit76bd17e3c095e2379daf893427cb3d9d277a064e (patch)
tree44451ebce5c6988597ec098f9a4cdd502b7c0c8d
parent0a537e04b9b5fb38ea21cc71af78698afb98ff88 (diff)
tracker/pt: add color extraction modes
-rw-r--r--tracker-pt/FTNoIR_PT_Controls.ui319
-rw-r--r--tracker-pt/ftnoir_tracker_pt_dialog.cpp12
-rw-r--r--tracker-pt/ftnoir_tracker_pt_settings.h13
-rw-r--r--tracker-pt/point_extractor.cpp78
-rw-r--r--tracker-pt/point_extractor.h4
-rw-r--r--tracker-pt/point_tracker.cpp4
-rw-r--r--tracker-pt/point_tracker.h4
7 files changed, 326 insertions, 108 deletions
diff --git a/tracker-pt/FTNoIR_PT_Controls.ui b/tracker-pt/FTNoIR_PT_Controls.ui
index 8d044654..ea83a215 100644
--- a/tracker-pt/FTNoIR_PT_Controls.ui
+++ b/tracker-pt/FTNoIR_PT_Controls.ui
@@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>424</width>
- <height>588</height>
+ <width>412</width>
+ <height>616</height>
</rect>
</property>
<property name="sizePolicy">
@@ -36,20 +36,81 @@
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
+ <item row="1" column="0" alignment="Qt::AlignVCenter">
+ <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>
+ <layout class="QGridLayout" name="gridLayout_10">
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Extracted Points:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_38">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Camera Info:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="pointinfo_label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="caminfo_label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
<item row="0" column="0">
<widget class="QTabWidget" name="tabWidget">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
<property name="locale">
<locale language="English" country="UnitedStates"/>
</property>
@@ -63,6 +124,12 @@
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="title">
<string>Camera settings</string>
</property>
@@ -70,7 +137,7 @@
<item row="0" column="1">
<widget class="QComboBox" name="camdevice_combo">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -82,6 +149,12 @@
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="fov">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="suffix">
<string>°</string>
</property>
@@ -99,7 +172,7 @@
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -112,7 +185,7 @@
<item row="1" column="0">
<widget class="QLabel" name="label_36">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -125,7 +198,7 @@
<item row="3" column="0">
<widget class="QLabel" name="label_37">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -141,7 +214,7 @@
<item row="2" column="1">
<widget class="QSpinBox" name="res_y_spin">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -162,6 +235,12 @@
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string>Dynamic pose timeout</string>
</property>
@@ -170,7 +249,7 @@
<item row="3" column="1">
<widget class="QSpinBox" name="fps_spin">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -188,6 +267,12 @@
</item>
<item row="5" column="1">
<widget class="QCheckBox" name="dynamic_pose">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string/>
</property>
@@ -196,7 +281,7 @@
<item row="1" column="1">
<widget class="QSpinBox" name="res_x_spin">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -218,7 +303,7 @@
<item row="2" column="0">
<widget class="QLabel" name="label_41">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -230,6 +315,12 @@
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="init_phase_timeout">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="suffix">
<string> ms</string>
</property>
@@ -242,9 +333,9 @@
</widget>
</item>
<item row="5" column="0">
- <widget class="QLabel" name="label_5">
+ <widget class="QLabel" name="label_13">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -257,7 +348,7 @@
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -285,22 +376,91 @@
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_9">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string>Camera settings (when available)</string>
</property>
</widget>
</item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_511111">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Dynamic pose (for caps only, never clips)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0">
+ <widget class="QLabel" name="label_12">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Color channels used</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="1">
+ <widget class="QComboBox" name="blob_color">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <item>
+ <property name="text">
+ <string>Normal</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Floppy filter</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Red</string>
+ </property>
+ </item>
+ </widget>
+ </item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="title">
<string>Point extraction</string>
</property>
<layout class="QGridLayout" name="gridLayout_7">
<item row="3" column="0">
<widget class="QLabel" name="label_8">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string>Max size</string>
</property>
@@ -311,6 +471,12 @@
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string>Threshold</string>
</property>
@@ -321,6 +487,12 @@
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_7">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string>Min size</string>
</property>
@@ -332,7 +504,7 @@
<item row="1" column="1" colspan="2">
<widget class="QSlider" name="threshold_slider">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Maximum">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -362,6 +534,12 @@
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_11">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string>Automatic threshold</string>
</property>
@@ -369,6 +547,12 @@
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="auto_threshold">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string>Enable, slider sets point size</string>
</property>
@@ -376,6 +560,12 @@
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="maxdiam_spin">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="toolTip">
<string>Maximum point diameter</string>
</property>
@@ -392,6 +582,12 @@
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="mindiam_spin">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="toolTip">
<string>Minimum point diameter</string>
</property>
@@ -1147,91 +1343,14 @@ Don't roll or change position.</string>
</widget>
</widget>
</item>
- <item row="2" column="0" alignment="Qt::AlignVCenter">
- <widget class="QGroupBox" name="groupBox_5">
+ <item row="2" column="0">
+ <widget class="QDialogButtonBox" name="buttonBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="title">
- <string>Status</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_10">
- <item row="1" column="0">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Extracted Points:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QLabel" name="label_38">
- <property name="text">
- <string>Camera Info:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QLabel" name="pointinfo_label">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>120</width>
- <height>15</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QLabel" name="caminfo_label">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>120</width>
- <height>15</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="1" column="0">
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Expanding</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>
diff --git a/tracker-pt/ftnoir_tracker_pt_dialog.cpp b/tracker-pt/ftnoir_tracker_pt_dialog.cpp
index ccedeb78..fa159d34 100644
--- a/tracker-pt/ftnoir_tracker_pt_dialog.cpp
+++ b/tracker-pt/ftnoir_tracker_pt_dialog.cpp
@@ -81,6 +81,18 @@ TrackerDialog_PT::TrackerDialog_PT()
poll_tracker_info_impl();
connect(this, &TrackerDialog_PT::poll_tracker_info, this, &TrackerDialog_PT::poll_tracker_info_impl, Qt::DirectConnection);
+
+ static constexpr pt_color_type color_types[] = {
+ pt_color_normal,
+ pt_color_floppy_filter,
+ pt_color_red_only,
+ };
+
+ static constexpr unsigned color_type_sz = sizeof(color_types) / sizeof(*color_types);
+ for (unsigned k = 0; k < color_type_sz; k++)
+ ui.blob_color->setItemData(k, int(color_types[k]));
+
+ tie_setting(s.blob_color, ui.blob_color);
}
void TrackerDialog_PT::startstop_trans_calib(bool start)
diff --git a/tracker-pt/ftnoir_tracker_pt_settings.h b/tracker-pt/ftnoir_tracker_pt_settings.h
index 79c1e103..265d382e 100644
--- a/tracker-pt/ftnoir_tracker_pt_settings.h
+++ b/tracker-pt/ftnoir_tracker_pt_settings.h
@@ -11,6 +11,15 @@
#include "options/options.hpp"
using namespace options;
+enum pt_color_type
+{
+ // explicit values, gotta preserve the numbering in .ini
+ // don't reuse when removing some of the modes
+ pt_color_normal = 2,
+ pt_color_red_only = 3,
+ pt_color_floppy_filter = 4,
+};
+
struct settings_pt : opts
{
value<QString> camera_name;
@@ -33,6 +42,7 @@ struct settings_pt : opts
value<bool> dynamic_pose;
value<int> init_phase_timeout;
value<bool> auto_threshold;
+ value<pt_color_type> blob_color;
settings_pt() :
opts("tracker-pt"),
@@ -63,6 +73,7 @@ struct settings_pt : opts
fov(b, "camera-fov", 56),
dynamic_pose(b, "dynamic-pose-resolution", true),
init_phase_timeout(b, "init-phase-timeout", 250),
- auto_threshold(b, "automatic-threshold", true)
+ auto_threshold(b, "automatic-threshold", true),
+ blob_color(b, "blob-color", pt_color_normal)
{}
};
diff --git a/tracker-pt/point_extractor.cpp b/tracker-pt/point_extractor.cpp
index dc36fbe5..54514111 100644
--- a/tracker-pt/point_extractor.cpp
+++ b/tracker-pt/point_extractor.cpp
@@ -78,6 +78,28 @@ PointExtractor::PointExtractor()
blobs.reserve(max_blobs);
}
+void PointExtractor::separate_channels(cv::Mat const& orig, const int* order, int order_npairs)
+{
+ if (unlikely(ch[0].rows != orig.rows || ch[0].cols != orig.cols))
+ {
+ for (unsigned k = 0; k < 3; k++)
+ {
+ ch[k] = cv::Mat1b(orig.rows, orig.cols);
+ ch_float[k] = cv::Mat1f(orig.rows, orig.cols);
+ }
+ // extra channel is a scratch buffer
+ ch_float[3] = cv::Mat1f(orig.rows, orig.cols);
+ }
+
+ if (order == nullptr)
+ cv::split(orig, (cv::Mat*) ch);
+ else
+ cv::mixChannels(&orig, 1, (cv::Mat*) ch, order_npairs, order, order_npairs);
+
+ for (unsigned k = 0; k < 3; k++)
+ ch[k].convertTo(ch_float[k], CV_32F);
+}
+
void PointExtractor::extract_points(const cv::Mat& frame, cv::Mat& preview_frame, std::vector<vec2>& points)
{
using std::sqrt;
@@ -92,8 +114,60 @@ void PointExtractor::extract_points(const cv::Mat& frame, cv::Mat& preview_frame
frame_blobs = cv::Mat1b(frame.rows, frame.cols);
}
- // convert to grayscale
- cv::cvtColor(frame, frame_gray, cv::COLOR_BGR2GRAY);
+ const pt_color_type color = s.blob_color;
+ if (color == pt_color_normal)
+ {
+ // convert to grayscale
+ // this operation is optimized
+ cv::cvtColor(frame, frame_gray, cv::COLOR_BGR2GRAY);
+ }
+ else
+ {
+ switch (color)
+ {
+ case pt_color_floppy_filter:
+ {
+ // weight for blue color
+ static constexpr float B = .8;
+ // single channel weight
+ static constexpr float A = 1./2;
+
+ static constexpr int from_to[] = {
+ 0, 0,
+ 1, 1
+ };
+
+ separate_channels(frame, from_to, 2);
+
+ ch_float[2] = ch_float[0] * B * A // blue
+ + ch_float[1] * (1 - B) * A; // green
+ ch_float[2].convertTo(frame_gray, CV_8U);
+
+ break;
+ }
+ case pt_color_red_only:
+ {
+ static constexpr int from_to[] = {
+ 2, 0
+ };
+
+ separate_channels(frame, from_to, 1);
+
+ static constexpr float R = 3;
+
+ ch_float[1] = ch_float[0] * R; // red
+
+ ch_float[1].convertTo(frame_gray, CV_8U);
+
+ break;
+ }
+ default:
+ once_only(qDebug() << "wrong pt_color_type enum value" << int(color));
+ // don't violate POLA
+ cv::cvtColor(frame, frame_gray, cv::COLOR_BGR2GRAY);
+ break;
+ }
+ }
const double region_size_min = s.min_point_size;
const double region_size_max = s.max_point_size;
diff --git a/tracker-pt/point_extractor.h b/tracker-pt/point_extractor.h
index 5fbe9a45..193c06dc 100644
--- a/tracker-pt/point_extractor.h
+++ b/tracker-pt/point_extractor.h
@@ -46,8 +46,10 @@ private:
cv::Mat frame_bin;
cv::Mat hist;
cv::Mat frame_blobs;
-
std::vector<blob> blobs;
+ cv::Mat ch[3], ch_float[4];
+
+ void separate_channels(cv::Mat const& orig_frame, int const* order = nullptr, int order_cnt = -1);
};
} // ns impl
diff --git a/tracker-pt/point_tracker.cpp b/tracker-pt/point_tracker.cpp
index d2620dce..ae873ef6 100644
--- a/tracker-pt/point_tracker.cpp
+++ b/tracker-pt/point_tracker.cpp
@@ -33,7 +33,7 @@ static void set_row(mat33& m, int i, const vec3& v)
m(i,2) = v[2];
}
-PointModel::PointModel(settings_pt& s)
+PointModel::PointModel(const settings_pt& s)
{
set_model(s);
// calculate u
@@ -47,7 +47,7 @@ PointModel::PointModel(settings_pt& s)
P = 1/(s11*s22-s12*s12) * mat22(s22, -s12, -s12, s11);
}
-void PointModel::set_model(settings_pt& s)
+void PointModel::set_model(const settings_pt& s)
{
switch (s.active_model_panel)
{
diff --git a/tracker-pt/point_tracker.h b/tracker-pt/point_tracker.h
index ebbbc801..2b142632 100644
--- a/tracker-pt/point_tracker.h
+++ b/tracker-pt/point_tracker.h
@@ -42,8 +42,8 @@ struct PointModel final
enum Model { Clip, Cap, Custom };
- PointModel(settings_pt& s);
- void set_model(settings_pt& s);
+ PointModel(const settings_pt& s);
+ void set_model(const settings_pt& s);
void get_d_order(const vec2* points, unsigned* d_order, const vec2& d) const;
};