diff options
Diffstat (limited to 'tracker-easy')
| -rw-r--r-- | tracker-easy/frame.cpp | 30 | ||||
| -rw-r--r-- | tracker-easy/frame.hpp | 1 | ||||
| -rw-r--r-- | tracker-easy/point_extractor.cpp | 10 | 
3 files changed, 33 insertions, 8 deletions
| diff --git a/tracker-easy/frame.cpp b/tracker-easy/frame.cpp index 9243c6a1..2464f85f 100644 --- a/tracker-easy/frame.cpp +++ b/tracker-easy/frame.cpp @@ -5,21 +5,37 @@  #include <opencv2/imgproc.hpp> -Preview& Preview::operator=(const cv::Mat& frame) +Preview& Preview::operator=(const cv::Mat& aFrame)  { -    if (frame.channels() != 3) +    // Make sure our frame is RGB +    // Make an extra copy if needed +    int channelCount = aFrame.channels(); +    if (channelCount == 1)      { -        eval_once(qDebug() << "tracker/pt: camera frame depth: 3 !=" << frame.channels()); +        // Convert to RGB +        cv::cvtColor(aFrame, iFrameRgb, cv::COLOR_GRAY2BGR); +    } +    else if (channelCount == 3) +    { +        iFrameRgb = aFrame; +    } +    else +    { +        eval_once(qDebug() << "tracker/easy: camera frame depth not supported" << aFrame.channels());          return *this;      } -    const bool need_resize = frame.cols != frame_out.cols || frame.rows != frame_out.rows; +    const bool need_resize = iFrameRgb.cols != frame_out.cols || iFrameRgb.rows != frame_out.rows;      if (need_resize) -        cv::resize(frame, frame_copy, cv::Size(frame_out.cols, frame_out.rows), 0, 0, cv::INTER_NEAREST); +    { +        cv::resize(iFrameRgb, frame_copy, cv::Size(frame_out.cols, frame_out.rows), 0, 0, cv::INTER_NEAREST); +    }              else -        frame.copyTo(frame_copy); - +    { +        iFrameRgb.copyTo(frame_copy); +    } +              return *this;  } diff --git a/tracker-easy/frame.hpp b/tracker-easy/frame.hpp index 01e99977..2a221de3 100644 --- a/tracker-easy/frame.hpp +++ b/tracker-easy/frame.hpp @@ -22,6 +22,7 @@ private:      static void ensure_size(cv::Mat& frame, int w, int h, int type);      cv::Mat frame_copy, frame_out; +    cv::Mat iFrameRgb;  }; diff --git a/tracker-easy/point_extractor.cpp b/tracker-easy/point_extractor.cpp index ecd72f70..06bb6c9a 100644 --- a/tracker-easy/point_extractor.cpp +++ b/tracker-easy/point_extractor.cpp @@ -242,7 +242,15 @@ void PointExtractor::extract_points(const cv::Mat& frame, cv::Mat& preview_frame  {      ensure_buffers(frame); -    color_to_grayscale(frame, frame_gray_unmasked); +    if (frame.channels() != 1) +    { +        color_to_grayscale(frame, frame_gray_unmasked); +    } +    else +    { +        frame_gray_unmasked = frame; +    } +      #if defined PREVIEW      cv::imshow("capture", frame_gray); | 
