Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/videoio/src/cap_intelperc.hpp
16354 views
1
/*M///////////////////////////////////////////////////////////////////////////////////////
2
//
3
// This file is part of OpenCV project.
4
// It is subject to the license terms in the LICENSE file found in the top-level directory
5
// of this distribution and at http://opencv.org/license.html.
6
//
7
// Copyright (C) 2014, Itseez, Inc., all rights reserved.
8
// Third party copyrights are property of their respective owners.
9
//
10
//M*/
11
12
#ifndef _CAP_INTELPERC_HPP_
13
#define _CAP_INTELPERC_HPP_
14
15
#include "precomp.hpp"
16
17
#ifdef HAVE_INTELPERC
18
19
#include "pxcsession.h"
20
#include "pxcsmartptr.h"
21
#include "pxccapture.h"
22
23
namespace cv
24
{
25
26
class IntelPerCStreamBase
27
{
28
public:
29
IntelPerCStreamBase();
30
virtual ~IntelPerCStreamBase();
31
32
bool isValid();
33
bool grabFrame();
34
int getProfileIDX() const;
35
public:
36
virtual bool initStream(PXCSession *session) = 0;
37
virtual double getProperty(int propIdx) const;
38
virtual bool setProperty(int propIdx, double propVal);
39
protected:
40
mutable PXCSmartPtr<PXCCapture::Device> m_device;
41
bool initDevice(PXCSession *session);
42
43
PXCSmartPtr<PXCCapture::VideoStream> m_stream;
44
void initStreamImpl(PXCImage::ImageType type);
45
protected:
46
std::vector<PXCCapture::VideoStream::ProfileInfo> m_profiles;
47
int m_profileIdx;
48
int m_frameIdx;
49
pxcU64 m_timeStampStartNS;
50
double m_timeStamp;
51
PXCSmartPtr<PXCImage> m_pxcImage;
52
53
virtual bool validProfile(const PXCCapture::VideoStream::ProfileInfo& /*pinfo*/);
54
void enumProfiles();
55
};
56
57
class IntelPerCStreamImage
58
: public IntelPerCStreamBase
59
{
60
public:
61
IntelPerCStreamImage();
62
virtual ~IntelPerCStreamImage();
63
64
virtual bool initStream(PXCSession *session);
65
virtual double getProperty(int propIdx) const;
66
virtual bool setProperty(int propIdx, double propVal);
67
public:
68
bool retrieveAsOutputArray(OutputArray image);
69
};
70
71
class IntelPerCStreamDepth
72
: public IntelPerCStreamBase
73
{
74
public:
75
IntelPerCStreamDepth();
76
virtual ~IntelPerCStreamDepth();
77
78
virtual bool initStream(PXCSession *session);
79
virtual double getProperty(int propIdx) const;
80
virtual bool setProperty(int propIdx, double propVal);
81
public:
82
bool retrieveDepthAsOutputArray(OutputArray image);
83
bool retrieveIRAsOutputArray(OutputArray image);
84
bool retrieveUVAsOutputArray(OutputArray image);
85
protected:
86
virtual bool validProfile(const PXCCapture::VideoStream::ProfileInfo& pinfo);
87
protected:
88
bool retriveFrame(int type, int planeIdx, OutputArray frame);
89
};
90
91
class VideoCapture_IntelPerC : public IVideoCapture
92
{
93
public:
94
VideoCapture_IntelPerC();
95
virtual ~VideoCapture_IntelPerC();
96
97
virtual double getProperty(int propIdx) const CV_OVERRIDE;
98
virtual bool setProperty(int propIdx, double propVal) CV_OVERRIDE;
99
100
virtual bool grabFrame() CV_OVERRIDE;
101
virtual bool retrieveFrame(int outputType, OutputArray frame) CV_OVERRIDE;
102
virtual int getCaptureDomain() CV_OVERRIDE;
103
virtual bool isOpened() const CV_OVERRIDE;
104
protected:
105
bool m_contextOpened;
106
107
PXCSmartPtr<PXCSession> m_session;
108
IntelPerCStreamImage m_imageStream;
109
IntelPerCStreamDepth m_depthStream;
110
};
111
112
}
113
114
#endif //HAVE_INTELPERC
115
#endif //_CAP_INTELPERC_HPP_
116