/* * Copyright (c) 2019 Stephane Lenclud * * 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. */ #pragma once #include #include namespace EasyTracker { struct Preview { Preview(int w, int h); Preview& operator=(const cv::Mat& frame); QImage get_bitmap(); void DrawCross(const cv::Point& aPoint, const cv::Scalar& aColor); void DrawInfo(const std::string& aString); operator cv::Mat&() { return iFrameResized; } operator cv::Mat const&() const { return iFrameResized; } private: static void ensure_size(cv::Mat& frame, int w, int h, int type); public: // Frame with an 8 bits channel size cv::Mat iFrameChannelSizeOne; // Frame with three channels for RGB cv::Mat iFrameRgb; // Frame rezised to widget dimension cv::Mat iFrameResized; // Frame ready to be packed in a QImage for use in our widget cv::Mat iFrameWidget; }; }