1+ #include " DatatypeBindings.hpp"
2+
3+ #include < memory>
4+
5+ // depthai-shared
6+ #include " depthai-shared/datatype/RawBuffer.hpp"
7+ #include " depthai-shared/datatype/ImgFrame.hpp"
8+ #include " depthai-shared/datatype/NNTensor.hpp"
9+
10+ void DatatypeBindings::bind (pybind11::module & m){
11+
12+ using namespace dai ;
13+
14+ // Bind RawBuffer
15+ py::class_<RawBuffer, std::shared_ptr<RawBuffer>>(m, " RawBuffer" )
16+ .def_readwrite (" data" , &RawBuffer::data)
17+ ;
18+
19+
20+ // Bind ImgFrame
21+ py::class_<ImgFrame, RawBuffer, std::shared_ptr<ImgFrame>> imgFrame (m, " ImgFrame" );
22+ imgFrame
23+ .def_readwrite (" fb" , &ImgFrame::fb)
24+ .def_readwrite (" category" , &ImgFrame::category)
25+ .def_readwrite (" instanceNum" , &ImgFrame::instanceNum)
26+ .def_readwrite (" sequenceNum" , &ImgFrame::sequenceNum)
27+ .def_property (" ts" ,
28+ [](const ImgFrame& o){
29+ double ts = o.ts .sec + o.ts .nsec / 1000000000.0 ;
30+ return ts;
31+ },
32+ [](ImgFrame& o, double ts){
33+ o.ts .sec = ts;
34+ o.ts .nsec = (ts - o.ts .sec ) * 1000000000.0 ;
35+ }
36+ )
37+ ;
38+
39+
40+ py::enum_<ImgFrame::Type>(imgFrame, " Type" )
41+ .value (" YUV422i" , ImgFrame::Type::YUV422i)
42+ .value (" YUV444p" , ImgFrame::Type::YUV444p)
43+ .value (" YUV420p" , ImgFrame::Type::YUV420p)
44+ .value (" YUV422p" , ImgFrame::Type::YUV422p)
45+ .value (" YUV400p" , ImgFrame::Type::YUV400p)
46+ .value (" RGBA8888" , ImgFrame::Type::RGBA8888)
47+ .value (" RGB161616" , ImgFrame::Type::RGB161616)
48+ .value (" RGB888" , ImgFrame::Type::RGB888)
49+ .value (" LUT2" , ImgFrame::Type::LUT2)
50+ .value (" LUT4" , ImgFrame::Type::LUT4)
51+ .value (" LUT16" , ImgFrame::Type::LUT16)
52+ .value (" RAW16" , ImgFrame::Type::RAW16)
53+ .value (" RAW14" , ImgFrame::Type::RAW14)
54+ .value (" RAW12" , ImgFrame::Type::RAW12)
55+ .value (" RAW10" , ImgFrame::Type::RAW10)
56+ .value (" RAW8" , ImgFrame::Type::RAW8)
57+ .value (" PACK10" , ImgFrame::Type::PACK10)
58+ .value (" PACK12" , ImgFrame::Type::PACK12)
59+ .value (" YUV444i" , ImgFrame::Type::YUV444i)
60+ .value (" NV12" , ImgFrame::Type::NV12)
61+ .value (" NV21" , ImgFrame::Type::NV21)
62+ .value (" BITSTREAM" , ImgFrame::Type::BITSTREAM)
63+ .value (" HDR" , ImgFrame::Type::HDR)
64+ .value (" NONE" , ImgFrame::Type::NONE)
65+ .export_values ()
66+ ;
67+
68+ py::class_<ImgFrame::Specs>(imgFrame, " Specs" )
69+ .def_readwrite (" type" , &ImgFrame::Specs::type)
70+ .def_readwrite (" width" , &ImgFrame::Specs::width)
71+ .def_readwrite (" height" , &ImgFrame::Specs::height)
72+ .def_readwrite (" stride" , &ImgFrame::Specs::stride)
73+ .def_readwrite (" bytesPP" , &ImgFrame::Specs::bytesPP)
74+ .def_readwrite (" p1Offset" , &ImgFrame::Specs::p1Offset)
75+ .def_readwrite (" p2Offset" , &ImgFrame::Specs::p2Offset)
76+ .def_readwrite (" p3Offset" , &ImgFrame::Specs::p3Offset)
77+ ;
78+
79+
80+
81+ // NNTensor
82+ py::class_<NNTensor, RawBuffer, std::shared_ptr<NNTensor>> nnTensor (m, " NNTensor" );
83+ nnTensor
84+ .def_readwrite (" tensors" , &NNTensor::tensors)
85+ .def_readwrite (" batchSize" , &NNTensor::batchSize)
86+ ;
87+
88+ py::class_<TensorInfo> tensorInfo (m, " TensorInfo" );
89+ tensorInfo
90+ .def_readwrite (" order" , &TensorInfo::order)
91+ .def_readwrite (" dataType" , &TensorInfo::dataType)
92+ .def_readwrite (" numDimensions" , &TensorInfo::numDimensions)
93+ .def_readwrite (" dims" , &TensorInfo::dims)
94+ .def_readwrite (" strides" , &TensorInfo::strides)
95+ .def_readwrite (" name" , &TensorInfo::name)
96+ .def_readwrite (" offset" , &TensorInfo::offset)
97+ ;
98+
99+ py::enum_<TensorInfo::DataType>(tensorInfo, " DataType" )
100+ .value (" FP16" , TensorInfo::DataType::FP16)
101+ .value (" U8F" , TensorInfo::DataType::U8F)
102+ .value (" INT" , TensorInfo::DataType::INT)
103+ .value (" FP32" , TensorInfo::DataType::FP32)
104+ .value (" I8" , TensorInfo::DataType::I8)
105+ .export_values ()
106+ ;
107+
108+ py::enum_<TensorInfo::StorageOrder>(tensorInfo, " TensorInfo" )
109+ .value (" NHWC" , TensorInfo::StorageOrder::NHWC)
110+ .value (" NHCW" , TensorInfo::StorageOrder::NHCW)
111+ .value (" NCHW" , TensorInfo::StorageOrder::NCHW)
112+ .value (" HWC" , TensorInfo::StorageOrder::HWC)
113+ .value (" CHW" , TensorInfo::StorageOrder::CHW)
114+ .value (" WHC" , TensorInfo::StorageOrder::WHC)
115+ .value (" HCW" , TensorInfo::StorageOrder::HCW)
116+ .value (" WCH" , TensorInfo::StorageOrder::WCH)
117+ .value (" CWH" , TensorInfo::StorageOrder::CWH)
118+ .value (" NC" , TensorInfo::StorageOrder::NC)
119+ .value (" CN" , TensorInfo::StorageOrder::CN)
120+ .value (" C" , TensorInfo::StorageOrder::C)
121+ .value (" H" , TensorInfo::StorageOrder::H)
122+ .value (" W" , TensorInfo::StorageOrder::W)
123+ .export_values ()
124+ ;
125+
126+
127+ }
0 commit comments