|
| 1 | +#include "NodeBindings.hpp" |
| 2 | +#include "Common.hpp" |
| 3 | + |
| 4 | +#include "depthai/pipeline/Pipeline.hpp" |
| 5 | +#include "depthai/pipeline/Node.hpp" |
| 6 | +#include "depthai/pipeline/node/Camera.hpp" |
| 7 | + |
| 8 | +void bind_camera(pybind11::module& m, void* pCallstack){ |
| 9 | + |
| 10 | + using namespace dai; |
| 11 | + using namespace dai::node; |
| 12 | + |
| 13 | + // Node and Properties declare upfront |
| 14 | + py::class_<CameraProperties> cameraProperties(m, "CameraProperties", DOC(dai, CameraProperties)); |
| 15 | + // py::enum_<CameraProperties::SensorResolution> cameraPropertiesSensorResolution(cameraProperties, "SensorResolution", DOC(dai, CameraProperties, SensorResolution)); |
| 16 | + py::enum_<CameraProperties::ColorOrder> cameraPropertiesColorOrder(cameraProperties, "ColorOrder", DOC(dai, CameraProperties, ColorOrder)); |
| 17 | + auto camera = ADD_NODE(Camera); |
| 18 | + |
| 19 | + /////////////////////////////////////////////////////////////////////// |
| 20 | + /////////////////////////////////////////////////////////////////////// |
| 21 | + /////////////////////////////////////////////////////////////////////// |
| 22 | + // Call the rest of the type defines, then perform the actual bindings |
| 23 | + Callstack* callstack = (Callstack*) pCallstack; |
| 24 | + auto cb = callstack->top(); |
| 25 | + callstack->pop(); |
| 26 | + cb(m, pCallstack); |
| 27 | + // Actual bindings |
| 28 | + /////////////////////////////////////////////////////////////////////// |
| 29 | + /////////////////////////////////////////////////////////////////////// |
| 30 | + /////////////////////////////////////////////////////////////////////// |
| 31 | + |
| 32 | + // // Camera Properties |
| 33 | + // cameraPropertiesSensorResolution |
| 34 | + // .value("THE_1080_P", CameraProperties::SensorResolution::THE_1080_P) |
| 35 | + // .value("THE_1200_P", CameraProperties::SensorResolution::THE_1200_P) |
| 36 | + // .value("THE_4_K", CameraProperties::SensorResolution::THE_4_K) |
| 37 | + // .value("THE_5_MP", CameraProperties::SensorResolution::THE_5_MP) |
| 38 | + // .value("THE_12_MP", CameraProperties::SensorResolution::THE_12_MP) |
| 39 | + // .value("THE_4000X3000", CameraProperties::SensorResolution::THE_4000X3000) |
| 40 | + // .value("THE_13_MP", CameraProperties::SensorResolution::THE_13_MP) |
| 41 | + // .value("THE_5312X6000", CameraProperties::SensorResolution::THE_5312X6000) |
| 42 | + // .value("THE_48_MP", CameraProperties::SensorResolution::THE_48_MP) |
| 43 | + // .value("THE_720_P", CameraProperties::SensorResolution::THE_720_P) |
| 44 | + // .value("THE_800_P", CameraProperties::SensorResolution::THE_800_P) |
| 45 | + // ; |
| 46 | + |
| 47 | + cameraPropertiesColorOrder |
| 48 | + .value("BGR", CameraProperties::ColorOrder::BGR) |
| 49 | + .value("RGB", CameraProperties::ColorOrder::RGB) |
| 50 | + ; |
| 51 | + |
| 52 | + cameraProperties |
| 53 | + .def_readwrite("initialControl", &CameraProperties::initialControl) |
| 54 | + .def_readwrite("boardSocket", &CameraProperties::boardSocket) |
| 55 | + .def_readwrite("imageOrientation", &CameraProperties::imageOrientation) |
| 56 | + .def_readwrite("colorOrder", &CameraProperties::colorOrder) |
| 57 | + .def_readwrite("interleaved", &CameraProperties::interleaved) |
| 58 | + .def_readwrite("fp16", &CameraProperties::fp16) |
| 59 | + .def_readwrite("previewHeight", &CameraProperties::previewHeight) |
| 60 | + .def_readwrite("previewWidth", &CameraProperties::previewWidth) |
| 61 | + .def_readwrite("videoHeight", &CameraProperties::videoHeight) |
| 62 | + .def_readwrite("videoWidth", &CameraProperties::videoWidth) |
| 63 | + .def_readwrite("stillHeight", &CameraProperties::stillHeight) |
| 64 | + .def_readwrite("stillWidth", &CameraProperties::stillWidth) |
| 65 | + // .def_readwrite("resolution", &CameraProperties::resolution) |
| 66 | + .def_readwrite("fps", &CameraProperties::fps) |
| 67 | + .def_readwrite("sensorCropX", &CameraProperties::sensorCropX) |
| 68 | + .def_readwrite("sensorCropY", &CameraProperties::sensorCropY) |
| 69 | + .def_readwrite("previewKeepAspectRatio", &CameraProperties::previewKeepAspectRatio) |
| 70 | + .def_readwrite("ispScale", &CameraProperties::ispScale) |
| 71 | + .def_readwrite("numFramesPoolRaw", &CameraProperties::numFramesPoolRaw) |
| 72 | + .def_readwrite("numFramesPoolIsp", &CameraProperties::numFramesPoolIsp) |
| 73 | + .def_readwrite("numFramesPoolVideo", &CameraProperties::numFramesPoolVideo) |
| 74 | + .def_readwrite("numFramesPoolPreview", &CameraProperties::numFramesPoolPreview) |
| 75 | + .def_readwrite("numFramesPoolStill", &CameraProperties::numFramesPoolStill) |
| 76 | + ; |
| 77 | + |
| 78 | + // Camera node |
| 79 | + camera |
| 80 | + .def_readonly("inputConfig", &Camera::inputConfig, DOC(dai, node, Camera, inputConfig)) |
| 81 | + .def_readonly("inputControl", &Camera::inputControl, DOC(dai, node, Camera, inputControl)) |
| 82 | + .def_readonly("initialControl", &Camera::initialControl, DOC(dai, node, Camera, initialControl)) |
| 83 | + .def_readonly("video", &Camera::video, DOC(dai, node, Camera, video)) |
| 84 | + .def_readonly("preview", &Camera::preview, DOC(dai, node, Camera, preview)) |
| 85 | + .def_readonly("still", &Camera::still, DOC(dai, node, Camera, still)) |
| 86 | + .def_readonly("isp", &Camera::isp, DOC(dai, node, Camera, isp)) |
| 87 | + .def_readonly("raw", &Camera::raw, DOC(dai, node, Camera, raw)) |
| 88 | + .def_readonly("frameEvent", &Camera::frameEvent, DOC(dai, node, Camera, frameEvent)) |
| 89 | + .def("setCamId", [](Camera& c, int64_t id) { |
| 90 | + // Issue an deprecation warning |
| 91 | + PyErr_WarnEx(PyExc_DeprecationWarning, "setCamId() is deprecated, use setBoardSocket() instead.", 1); |
| 92 | + HEDLEY_DIAGNOSTIC_PUSH |
| 93 | + HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED |
| 94 | + c.setCamId(id); |
| 95 | + HEDLEY_DIAGNOSTIC_POP |
| 96 | + }) |
| 97 | + .def("getCamId", [](Camera& c) { |
| 98 | + // Issue an deprecation warning |
| 99 | + PyErr_WarnEx(PyExc_DeprecationWarning, "getCamId() is deprecated, use getBoardSocket() instead.", 1); |
| 100 | + HEDLEY_DIAGNOSTIC_PUSH |
| 101 | + HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED |
| 102 | + return c.getCamId(); |
| 103 | + HEDLEY_DIAGNOSTIC_POP |
| 104 | + }) |
| 105 | + .def("setBoardSocket", &Camera::setBoardSocket, py::arg("boardSocket"), DOC(dai, node, Camera, setBoardSocket)) |
| 106 | + .def("getBoardSocket", &Camera::getBoardSocket, DOC(dai, node, Camera, getBoardSocket)) |
| 107 | + .def("setImageOrientation", &Camera::setImageOrientation, py::arg("imageOrientation"), DOC(dai, node, Camera, setImageOrientation)) |
| 108 | + .def("getImageOrientation", &Camera::getImageOrientation, DOC(dai, node, Camera, getImageOrientation)) |
| 109 | + .def("setColorOrder", &Camera::setColorOrder, py::arg("colorOrder"), DOC(dai, node, Camera, setColorOrder)) |
| 110 | + .def("getColorOrder", &Camera::getColorOrder, DOC(dai, node, Camera, getColorOrder)) |
| 111 | + .def("setInterleaved", &Camera::setInterleaved, py::arg("interleaved"), DOC(dai, node, Camera, setInterleaved)) |
| 112 | + .def("getInterleaved", &Camera::getInterleaved, DOC(dai, node, Camera, getInterleaved)) |
| 113 | + .def("setFp16", &Camera::setFp16, py::arg("fp16"), DOC(dai, node, Camera, setFp16)) |
| 114 | + .def("getFp16", &Camera::getFp16, DOC(dai, node, Camera, getFp16)) |
| 115 | + .def("setPreviewSize", static_cast<void(Camera::*)(int,int)>(&Camera::setPreviewSize), py::arg("width"), py::arg("height"), DOC(dai, node, Camera, setPreviewSize)) |
| 116 | + .def("setPreviewSize", static_cast<void(Camera::*)(std::tuple<int,int>)>(&Camera::setPreviewSize), py::arg("size"), DOC(dai, node, Camera, setPreviewSize, 2)) |
| 117 | + .def("setVideoSize", static_cast<void(Camera::*)(int,int)>(&Camera::setVideoSize), py::arg("width"), py::arg("height"), DOC(dai, node, Camera, setVideoSize)) |
| 118 | + .def("setVideoSize", static_cast<void(Camera::*)(std::tuple<int,int>)>(&Camera::setVideoSize), py::arg("size"), DOC(dai, node, Camera, setVideoSize, 2)) |
| 119 | + .def("setStillSize", static_cast<void(Camera::*)(int,int)>(&Camera::setStillSize), py::arg("width"), py::arg("height"), DOC(dai, node, Camera, setStillSize)) |
| 120 | + .def("setStillSize", static_cast<void(Camera::*)(std::tuple<int,int>)>(&Camera::setStillSize), py::arg("size"), DOC(dai, node, Camera, setStillSize, 2)) |
| 121 | + // .def("setResolution", &Camera::setResolution, py::arg("resolution"), DOC(dai, node, Camera, setResolution)) |
| 122 | + // .def("getResolution", &Camera::getResolution, DOC(dai, node, Camera, getResolution)) |
| 123 | + .def("setFps", &Camera::setFps, py::arg("fps"), DOC(dai, node, Camera, setFps)) |
| 124 | + .def("getFps", &Camera::getFps, DOC(dai, node, Camera, getFps)) |
| 125 | + .def("getPreviewSize", &Camera::getPreviewSize, DOC(dai, node, Camera, getPreviewSize)) |
| 126 | + .def("getPreviewWidth", &Camera::getPreviewWidth, DOC(dai, node, Camera, getPreviewWidth)) |
| 127 | + .def("getPreviewHeight", &Camera::getPreviewHeight, DOC(dai, node, Camera, getPreviewHeight)) |
| 128 | + .def("getVideoSize", &Camera::getVideoSize, DOC(dai, node, Camera, getVideoSize)) |
| 129 | + .def("getVideoWidth", &Camera::getVideoWidth, DOC(dai, node, Camera, getVideoWidth)) |
| 130 | + .def("getVideoHeight", &Camera::getVideoHeight, DOC(dai, node, Camera, getVideoHeight)) |
| 131 | + .def("getStillSize", &Camera::getStillSize, DOC(dai, node, Camera, getStillSize)) |
| 132 | + .def("getStillWidth", &Camera::getStillWidth, DOC(dai, node, Camera, getStillWidth)) |
| 133 | + .def("getStillHeight", &Camera::getStillHeight, DOC(dai, node, Camera, getStillHeight)) |
| 134 | + .def("getResolutionSize", &Camera::getResolutionSize, DOC(dai, node, Camera, getResolutionSize)) |
| 135 | + .def("getResolutionWidth", &Camera::getResolutionWidth, DOC(dai, node, Camera, getResolutionWidth)) |
| 136 | + .def("getResolutionHeight", &Camera::getResolutionHeight, DOC(dai, node, Camera, getResolutionHeight)) |
| 137 | + .def("sensorCenterCrop", &Camera::sensorCenterCrop, DOC(dai, node, Camera, sensorCenterCrop)) |
| 138 | + .def("setSensorCrop", &Camera::setSensorCrop, py::arg("x"), py::arg("y"), DOC(dai, node, Camera, setSensorCrop)) |
| 139 | + .def("getSensorCrop", &Camera::getSensorCrop, DOC(dai, node, Camera, getSensorCrop)) |
| 140 | + .def("getSensorCropX", &Camera::getSensorCropX, DOC(dai, node, Camera, getSensorCropX)) |
| 141 | + .def("getSensorCropY", &Camera::getSensorCropY, DOC(dai, node, Camera, getSensorCropY)) |
| 142 | + |
| 143 | + .def("setWaitForConfigInput", [](Camera& cam, bool wait){ |
| 144 | + // Issue a deprecation warning |
| 145 | + PyErr_WarnEx(PyExc_DeprecationWarning, "Use 'inputConfig.setWaitForMessage()' instead", 1); |
| 146 | + HEDLEY_DIAGNOSTIC_PUSH |
| 147 | + HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED |
| 148 | + cam.setWaitForConfigInput(wait); |
| 149 | + HEDLEY_DIAGNOSTIC_POP |
| 150 | + }, py::arg("wait"), DOC(dai, node, Camera, setWaitForConfigInput)) |
| 151 | + |
| 152 | + .def("getWaitForConfigInput", [](Camera& cam){ |
| 153 | + // Issue a deprecation warning |
| 154 | + PyErr_WarnEx(PyExc_DeprecationWarning, "Use 'inputConfig.setWaitForMessage()' instead", 1); |
| 155 | + HEDLEY_DIAGNOSTIC_PUSH |
| 156 | + HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED |
| 157 | + return cam.getWaitForConfigInput(); |
| 158 | + HEDLEY_DIAGNOSTIC_POP |
| 159 | + }, DOC(dai, node, Camera, getWaitForConfigInput)) |
| 160 | + |
| 161 | + .def("setPreviewKeepAspectRatio", &Camera::setPreviewKeepAspectRatio, py::arg("keep"), DOC(dai, node, Camera, setPreviewKeepAspectRatio)) |
| 162 | + .def("getPreviewKeepAspectRatio", &Camera::getPreviewKeepAspectRatio, DOC(dai, node, Camera, getPreviewKeepAspectRatio)) |
| 163 | + .def("setIspScale", static_cast<void(Camera::*)(int,int)>(&Camera::setIspScale), py::arg("numerator"), py::arg("denominator"), DOC(dai, node, Camera, setIspScale)) |
| 164 | + .def("setIspScale", static_cast<void(Camera::*)(std::tuple<int,int>)>(&Camera::setIspScale), py::arg("scale"), DOC(dai, node, Camera, setIspScale, 2)) |
| 165 | + .def("setIspScale", static_cast<void(Camera::*)(int,int,int,int)>(&Camera::setIspScale), py::arg("horizNum"), py::arg("horizDenom"), py::arg("vertNum"), py::arg("vertDenom"), DOC(dai, node, Camera, setIspScale, 3)) |
| 166 | + .def("setIspScale", static_cast<void(Camera::*)(std::tuple<int,int>,std::tuple<int,int>)>(&Camera::setIspScale), py::arg("horizScale"), py::arg("vertScale"), DOC(dai, node, Camera, setIspScale, 4)) |
| 167 | + .def("getIspSize", &Camera::getIspSize, DOC(dai, node, Camera, getIspSize)) |
| 168 | + .def("getIspWidth", &Camera::getIspWidth, DOC(dai, node, Camera, getIspWidth)) |
| 169 | + .def("getIspHeight", &Camera::getIspHeight, DOC(dai, node, Camera, getIspHeight)) |
| 170 | + |
| 171 | + .def("setPreviewNumFramesPool", &Camera::setPreviewNumFramesPool, DOC(dai, node, Camera, setPreviewNumFramesPool)) |
| 172 | + .def("setVideoNumFramesPool", &Camera::setVideoNumFramesPool, DOC(dai, node, Camera, setVideoNumFramesPool)) |
| 173 | + .def("setStillNumFramesPool", &Camera::setStillNumFramesPool, DOC(dai, node, Camera, setStillNumFramesPool)) |
| 174 | + .def("setRawNumFramesPool", &Camera::setRawNumFramesPool, DOC(dai, node, Camera, setRawNumFramesPool)) |
| 175 | + .def("setIspNumFramesPool", &Camera::setIspNumFramesPool, DOC(dai, node, Camera, setIspNumFramesPool)) |
| 176 | + .def("setNumFramesPool", &Camera::setNumFramesPool, py::arg("raw"), py::arg("isp"), py::arg("preview"), py::arg("video"), py::arg("still"), DOC(dai, node, Camera, setNumFramesPool)) |
| 177 | + |
| 178 | + .def("getPreviewNumFramesPool", &Camera::getPreviewNumFramesPool, DOC(dai, node, Camera, getPreviewNumFramesPool)) |
| 179 | + .def("getVideoNumFramesPool", &Camera::getVideoNumFramesPool, DOC(dai, node, Camera, getVideoNumFramesPool)) |
| 180 | + .def("getStillNumFramesPool", &Camera::getStillNumFramesPool, DOC(dai, node, Camera, getStillNumFramesPool)) |
| 181 | + .def("getRawNumFramesPool", &Camera::getRawNumFramesPool, DOC(dai, node, Camera, getRawNumFramesPool)) |
| 182 | + .def("getIspNumFramesPool", &Camera::getIspNumFramesPool, DOC(dai, node, Camera, getIspNumFramesPool)) |
| 183 | + .def("setCamera", &Camera::setCamera, py::arg("name"), DOC(dai, node, Camera, setCamera)) |
| 184 | + .def("getCamera", &Camera::getCamera, DOC(dai, node, Camera, getCamera)) |
| 185 | + ; |
| 186 | + // ALIAS |
| 187 | + daiNodeModule.attr("Camera").attr("Properties") = cameraProperties; |
| 188 | + |
| 189 | +} |
0 commit comments