1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #pragma once 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #include "IFrameOutput.hpp" 9*89c4ff92SAndroid Build Coastguard Worker #include <opencv2/opencv.hpp> 10*89c4ff92SAndroid Build Coastguard Worker 11*89c4ff92SAndroid Build Coastguard Worker namespace common 12*89c4ff92SAndroid Build Coastguard Worker { 13*89c4ff92SAndroid Build Coastguard Worker 14*89c4ff92SAndroid Build Coastguard Worker class CvWindowOutput : public IFrameOutput<cv::Mat> { 15*89c4ff92SAndroid Build Coastguard Worker public: 16*89c4ff92SAndroid Build Coastguard Worker 17*89c4ff92SAndroid Build Coastguard Worker CvWindowOutput() = default; 18*89c4ff92SAndroid Build Coastguard Worker 19*89c4ff92SAndroid Build Coastguard Worker ~CvWindowOutput() override = default; 20*89c4ff92SAndroid Build Coastguard Worker 21*89c4ff92SAndroid Build Coastguard Worker /** 22*89c4ff92SAndroid Build Coastguard Worker * @brief Creates a named window. 23*89c4ff92SAndroid Build Coastguard Worker * 24*89c4ff92SAndroid Build Coastguard Worker * Uses opencv to create a window with given name. 25*89c4ff92SAndroid Build Coastguard Worker * 26*89c4ff92SAndroid Build Coastguard Worker * @param windowName opencv window name. 27*89c4ff92SAndroid Build Coastguard Worker * 28*89c4ff92SAndroid Build Coastguard Worker */ 29*89c4ff92SAndroid Build Coastguard Worker void Init(const std::string& windowName); 30*89c4ff92SAndroid Build Coastguard Worker 31*89c4ff92SAndroid Build Coastguard Worker /** 32*89c4ff92SAndroid Build Coastguard Worker * Writes frame to the window. 33*89c4ff92SAndroid Build Coastguard Worker * 34*89c4ff92SAndroid Build Coastguard Worker * @param frame data to write. 35*89c4ff92SAndroid Build Coastguard Worker */ 36*89c4ff92SAndroid Build Coastguard Worker void WriteFrame(std::shared_ptr<cv::Mat>& frame) override; 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker /** 39*89c4ff92SAndroid Build Coastguard Worker * Releases all windows. 40*89c4ff92SAndroid Build Coastguard Worker */ 41*89c4ff92SAndroid Build Coastguard Worker void Close() override; 42*89c4ff92SAndroid Build Coastguard Worker 43*89c4ff92SAndroid Build Coastguard Worker /** 44*89c4ff92SAndroid Build Coastguard Worker * Always true. 45*89c4ff92SAndroid Build Coastguard Worker * @return true. 46*89c4ff92SAndroid Build Coastguard Worker */ 47*89c4ff92SAndroid Build Coastguard Worker bool IsReady() const override; 48*89c4ff92SAndroid Build Coastguard Worker 49*89c4ff92SAndroid Build Coastguard Worker private: 50*89c4ff92SAndroid Build Coastguard Worker std::string m_windowName; 51*89c4ff92SAndroid Build Coastguard Worker 52*89c4ff92SAndroid Build Coastguard Worker }; 53*89c4ff92SAndroid Build Coastguard Worker }// namespace common