summaryrefslogtreecommitdiffhomepage
path: root/tracker-pt/tracker-wii/wii_point_extractor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tracker-pt/tracker-wii/wii_point_extractor.cpp')
-rw-r--r--tracker-pt/tracker-wii/wii_point_extractor.cpp143
1 files changed, 0 insertions, 143 deletions
diff --git a/tracker-pt/tracker-wii/wii_point_extractor.cpp b/tracker-pt/tracker-wii/wii_point_extractor.cpp
deleted file mode 100644
index f1fc013d..00000000
--- a/tracker-pt/tracker-wii/wii_point_extractor.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
-* Copyright (c) 2017-2018 Wei Shuai <cpuwolf@gmail.com>
-*
-* Permission to use, copy, modify, and/or distribute this software for any
-* purpose with or without fee is hereby granted, provided that the above
-* copyright notice and this permission notice appear in all copies.
-*/
-
-#include "wii_point_extractor.h"
-
-#include "point_tracker.h"
-#include "wii_frame.hpp"
-
-#include "cv/numeric.hpp"
-#include "compat/math.hpp"
-
-#include <opencv2/videoio.hpp>
-
-#undef PREVIEW
-//#define PREVIEW
-
-#if defined PREVIEW
-# include <opencv2/highgui.hpp>
-#endif
-
-#include <cmath>
-#include <algorithm>
-#include <cinttypes>
-#include <memory>
-
-#include <QDebug>
-
-using namespace types;
-using namespace pt_module;
-
-
-WIIPointExtractor::WIIPointExtractor(const QString& module_name) : s(module_name)
-{
-
-}
-
-//define a temp draw function
-void WIIPointExtractor::_draw_point(cv::Mat& preview_frame, const vec2& p, const cv::Scalar& color, int thinkness)
-{
- static constexpr int len = 9;
-
- cv::Point p2(iround(p[0] * preview_frame.cols + preview_frame.cols / 2),
- iround(-p[1] * preview_frame.cols + preview_frame.rows / 2));
-
- cv::line(preview_frame,
- cv::Point(p2.x - len, p2.y),
- cv::Point(p2.x + len, p2.y),
- color,
- thinkness);
- cv::line(preview_frame,
- cv::Point(p2.x, p2.y - len),
- cv::Point(p2.x, p2.y + len),
- color,
- thinkness);
-};
-
-bool WIIPointExtractor::_draw_points(cv::Mat& preview_frame, const struct wii_info &wii, std::vector<vec2>& points)
-{
- const float W = 1024.0f;
- const float H = 768.0f;
- points.reserve(4);
- points.clear();
-
- for (unsigned index = 0; index < 4; index++)
- {
- const struct wii_info_points &dot = wii.Points[index];
- if (dot.bvis) {
- //qDebug() << "wii:" << dot.RawX << "+" << dot.RawY;
- //anti-clockwise rotate the 2D point
- const float RX = W - dot.ux;
- const float RY = H - dot.uy;
- //vec2 dt((dot.RawX - W / 2.0f) / W, -(dot.RawY - H / 2.0f) / W);
- //vec2 dt((RX - W / 2.0f) / W, -(RY - H / 2.0f) / W);
- //vec2 dt((2.0f*RX - W) / W, -(2.0f*RY - H ) / W);
- vec2 dt;
- std::tie(dt[0], dt[1]) = to_screen_pos(RX, RY, W, H);
-
- points.push_back(dt);
- _draw_point(preview_frame, dt, cv::Scalar(0, 255, 0), dot.isize);
- }
- }
- const bool success = points.size() >= PointModel::N_POINTS;
-
- return success;
-}
-
-void WIIPointExtractor::_draw_bg(cv::Mat& preview_frame, const struct wii_info &wii)
-{
- //draw battery status
- cv::line(preview_frame,
- cv::Point(0, 0),
- cv::Point(preview_frame.cols*wii.BatteryPercent / 100, 0),
- (wii.bBatteryDrained ? cv::Scalar(255, 0, 0) : cv::Scalar(0, 140, 0)),
- 2);
-
- //draw horizon
- int pdelta = iround((preview_frame.rows / 4) * tan((wii.Pitch)* M_PI / 180.0f));
- int rdelta = iround((preview_frame.cols / 4) * tan((wii.Roll)* M_PI / 180.0f));
-
- cv::line(preview_frame,
- cv::Point(0, preview_frame.rows / 2 + rdelta - pdelta),
- cv::Point(preview_frame.cols, preview_frame.rows / 2 - rdelta - pdelta),
- cv::Scalar(80, 80, 80),
- 1);
-}
-
-
-void WIIPointExtractor::extract_points(const pt_frame& frame_, pt_preview& preview_frame_, std::vector<vec2>& points)
-{
- const cv::Mat& frame = frame_.as_const<WIIFrame>()->mat;
- const struct wii_info& wii = frame_.as_const<WIIFrame>()->wii;
- cv::Mat& preview_frame = *preview_frame_.as<WIIPreview>();
-
- //create a blank frame
- //cv::Mat blank_frame(preview_frame.cols, preview_frame.rows, CV_8UC3, cv::Scalar(0, 0, 0));
- //cv::cvtColor(_frame, _frame2, cv::COLOR_BGR2BGRA);
- //cv::resize(blank_frame, preview_frame, cv::Size(preview_frame.cols, preview_frame.rows), 0, 0, cv::INTER_NEAREST);
-
- switch (wii.status) {
- case wii_cam_data_change:
- _draw_bg(preview_frame, wii);
- _draw_points(preview_frame, wii, points);
- break;
- case wii_cam_wait_for_connect:
- char txtbuf[64];
- sprintf(txtbuf, "%s", "wait for WIImote");
- //draw wait text
- cv::putText(preview_frame,
- txtbuf,
- cv::Point(preview_frame.cols / 10, preview_frame.rows / 2),
- cv::FONT_HERSHEY_SIMPLEX,
- 1,
- cv::Scalar(255, 255, 255),
- 1);
- break;
- }
-}
-