xref: /aosp_15_r20/external/armnn/samples/common/include/CVUtils/CvWindowOutput.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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