From 06a8c5090df2e6035d281a278e368b5d414fbdd1 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Tue, 12 Nov 2024 15:48:28 +0100 Subject: [PATCH 01/68] Fix ImgTransformations docs --- include/depthai/common/ImgTransformations.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/depthai/common/ImgTransformations.hpp b/include/depthai/common/ImgTransformations.hpp index 40ae2aa10..8897a99f0 100644 --- a/include/depthai/common/ImgTransformations.hpp +++ b/include/depthai/common/ImgTransformations.hpp @@ -177,12 +177,12 @@ struct ImgTransformation { ImgTransformation& addCrop(int x, int y, int width, int height); /** * Add a pad transformation. Works like crop, but in reverse. - * @param x Padding on the left. The x coordinate of the top-left corner in the new image. - * @param y Padding on the top. The y coordinate of the top-left corner in the new image. - * @param width New image width - * @param height New image height + * @param top Padding on the top + * @param bottom Padding on the bottom + * @param left Padding on the left + * @param right Padding on the right */ - ImgTransformation& addPadding(int x, int y, int width, int height); + ImgTransformation& addPadding(int top, int bottom, int left, int right); /** * Add a vertical flip transformation. */ From dbca122f8fc87d7f374ba1bb97a61eabcd0a9ed1 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 20 Nov 2024 16:23:23 +0100 Subject: [PATCH 02/68] ImgTransformations fixes & improvements --- include/depthai/common/ImgTransformations.hpp | 1 + src/pipeline/datatype/ImgTransformations.cpp | 12 ++++++++++-- src/pipeline/node/ImageManipV2.cpp | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/depthai/common/ImgTransformations.hpp b/include/depthai/common/ImgTransformations.hpp index 8897a99f0..630f99232 100644 --- a/include/depthai/common/ImgTransformations.hpp +++ b/include/depthai/common/ImgTransformations.hpp @@ -204,6 +204,7 @@ struct ImgTransformation { */ ImgTransformation& addScale(float scaleX, float scaleY); ImgTransformation& addSrcCrops(const std::vector<dai::RotatedRect>& crops); + ImgTransformation& setSize(size_t width, size_t height); /** * Remap a point from this transformation to another. If the intrinsics are different (e.g. different camera), the function will also use the intrinsics to diff --git a/src/pipeline/datatype/ImgTransformations.cpp b/src/pipeline/datatype/ImgTransformations.cpp index eef90507a..8fc2fc1e9 100644 --- a/src/pipeline/datatype/ImgTransformations.cpp +++ b/src/pipeline/datatype/ImgTransformations.cpp @@ -8,6 +8,8 @@ namespace dai { +constexpr float ROUND_UP_EPS = 1e-3f; + // Function to check if a point is inside a rotated rectangle inline bool isPointInRotatedRectangle(const dai::Point2f& p, const dai::RotatedRect& rect) { auto theta = -rect.angle * (float)M_PI / 180.0f; @@ -342,8 +344,8 @@ ImgTransformation& ImgTransformation::addRotation(float angle, dai::Point2f rota return *this; } ImgTransformation& ImgTransformation::addScale(float scaleX, float scaleY) { - width *= scaleX; - height *= scaleY; + width = width * scaleX + ROUND_UP_EPS; + height = height * scaleY + ROUND_UP_EPS; std::array<std::array<float, 3>, 3> scaleMatrix = {{{scaleX, 0, 0}, {0, scaleY, 0}, {0, 0, 1}}}; addTransformation(scaleMatrix); return *this; @@ -355,6 +357,12 @@ ImgTransformation& ImgTransformation::addSrcCrops(const std::vector<dai::Rotated return *this; } +ImgTransformation& ImgTransformation::setSize(size_t width, size_t height) { + this->width = width; + this->height = height; + return *this; +} + bool ImgTransformation::isValid() const { return srcWidth > 0 && srcHeight > 0 && width > 0 && height > 0; } diff --git a/src/pipeline/node/ImageManipV2.cpp b/src/pipeline/node/ImageManipV2.cpp index 6312c9e24..a831e80f3 100644 --- a/src/pipeline/node/ImageManipV2.cpp +++ b/src/pipeline/node/ImageManipV2.cpp @@ -47,6 +47,7 @@ void ImageManipV2::run() { auto srcCrops = manip.getSrcCrops(); dstFrame.transformation.addSrcCrops(srcCrops); dstFrame.transformation.addTransformation(manip.getMatrix()); + dstFrame.transformation.setSize(dstSpecs.width, dstSpecs.height); }); } From ff149e6dbe3d3b8e9414a29fcea9eff5336da946 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 20 Nov 2024 16:24:30 +0100 Subject: [PATCH 03/68] Bump rvc2 fw --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index d520e5fd8..1528cb541 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "2211ddbe7b346eb82142837947967f371e42c4bf") +set(DEPTHAI_DEVICE_SIDE_COMMIT "c4bdfa91e614bf2d0a82ac7b950f0e7c0ee9dc7b") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 3945716cfd37332a2a736f30a52e6bd9c6415b57 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Thu, 21 Nov 2024 14:36:57 +0100 Subject: [PATCH 04/68] Added stereodepth example --- examples/cpp/CMakeLists.txt | 3 + examples/cpp/StereoDepth/depth_preview.cpp | 65 ++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 examples/cpp/StereoDepth/depth_preview.cpp diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt index e94b71096..8ea1de176 100644 --- a/examples/cpp/CMakeLists.txt +++ b/examples/cpp/CMakeLists.txt @@ -273,6 +273,9 @@ dai_add_example(record_imu RVC2/Record/record_imu.cpp OFF OFF) dai_add_example(replay_video_meta RVC2/Replay/replay_video_meta.cpp OFF OFF) dai_add_example(replay_imu RVC2/Replay/replay_imu.cpp OFF OFF) +# StereoDepth +dai_add_example(depth_preview StereoDepth/depth_preview.cpp OFF OFF) + # Thermal dai_add_example(thermal RVC2/Thermal/thermal.cpp OFF OFF) diff --git a/examples/cpp/StereoDepth/depth_preview.cpp b/examples/cpp/StereoDepth/depth_preview.cpp new file mode 100644 index 000000000..0466c6e08 --- /dev/null +++ b/examples/cpp/StereoDepth/depth_preview.cpp @@ -0,0 +1,65 @@ +#include <iostream> + +// Includes common necessary includes for development using depthai library +#include "depthai/depthai.hpp" +#include "depthai/pipeline/datatype/StereoDepthConfig.hpp" +#include "depthai/pipeline/node/StereoDepth.hpp" +#include "depthai/properties/StereoDepthProperties.hpp" + +// Closer-in minimum depth, disparity range is doubled (from 95 to 190): +static std::atomic<bool> extended_disparity{false}; +// Better accuracy for longer distance, fractional disparity 32-levels: +static std::atomic<bool> subpixel{false}; +// Better handling for occlusions: +static std::atomic<bool> lr_check{true}; + +int main() { + // Create pipeline + dai::Pipeline pipeline; + + // Define sources and outputs + auto monoLeft = pipeline.create<dai::node::Camera>()->build(dai::CameraBoardSocket::CAM_B); + auto monoRight = pipeline.create<dai::node::Camera>()->build(dai::CameraBoardSocket::CAM_C); + auto depth = pipeline.create<dai::node::StereoDepth>(); + + // Properties + auto* lout = monoLeft->requestOutput({640, 400}); + auto* rout = monoRight->requestOutput({640, 400}); + + // Create a node that will produce the depth map (using disparity output as it's easier to visualize depth this way) + depth->build(*lout, *rout, dai::node::StereoDepth::PresetMode::HIGH_DENSITY); + // Options: MEDIAN_OFF, KERNEL_3x3, KERNEL_5x5, KERNEL_7x7 (default) + depth->initialConfig.setMedianFilter(dai::StereoDepthConfig::MedianFilter::KERNEL_7x7); + depth->setLeftRightCheck(lr_check); + depth->setExtendedDisparity(extended_disparity); + depth->setSubpixel(subpixel); + + // Output queue will be used to get the disparity frames from the outputs defined above + auto q = depth->disparity.createOutputQueue(); + auto qleft = lout->createOutputQueue(); + + pipeline.start(); + + while(true) { + auto inDepth = q->get<dai::ImgFrame>(); + auto inLeft = qleft->get<dai::ImgFrame>(); + auto frame = inDepth->getFrame(); + // Normalization for better visualization + frame.convertTo(frame, CV_8UC1, 255 / depth->initialConfig.getMaxDisparity()); + + std::cout << "Left type: " << inLeft->fb.str() << std::endl; + + cv::imshow("disparity", frame); + + // Available color maps: https://docs.opencv.org/3.4/d3/d50/group__imgproc__colormap.html + cv::applyColorMap(frame, frame, cv::COLORMAP_JET); + cv::imshow("disparity_color", frame); + + int key = cv::waitKey(1); + if(key == 'q' || key == 'Q') { + break; + } + } + pipeline.stop(); + return 0; +} From 6e76aeddf10fcd730390bd3a86dc6fa41f3798f0 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 27 Nov 2024 12:42:07 +0100 Subject: [PATCH 05/68] Bump rvc2 firmware --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- examples/cpp/ImageManip/image_manip_v2_mod.cpp | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 1528cb541..d2b2636fe 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "c4bdfa91e614bf2d0a82ac7b950f0e7c0ee9dc7b") +set(DEPTHAI_DEVICE_SIDE_COMMIT "8332e3f133d658be288e417fd3cd84c0cb43867b") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") diff --git a/examples/cpp/ImageManip/image_manip_v2_mod.cpp b/examples/cpp/ImageManip/image_manip_v2_mod.cpp index 76d1ae62d..2c7a75ef3 100644 --- a/examples/cpp/ImageManip/image_manip_v2_mod.cpp +++ b/examples/cpp/ImageManip/image_manip_v2_mod.cpp @@ -14,13 +14,10 @@ int main(int argc, char** argv) { } dai::Pipeline pipeline(device); - auto camRgb = pipeline.create<dai::node::ColorCamera>(); + auto camRgb = pipeline.create<dai::node::Camera>()->build(dai::CameraBoardSocket::CAM_A); auto display = pipeline.create<dai::node::Display>(); auto manip = pipeline.create<dai::node::ImageManipV2>(); - camRgb->setBoardSocket(dai::CameraBoardSocket::CAM_A); - camRgb->setResolution(dai::ColorCameraProperties::SensorResolution::THE_1080_P); - manip->setMaxOutputFrameSize(4000000); manip->initialConfig.setOutputSize(1280, 720, dai::ImageManipConfigV2::ResizeMode::LETTERBOX); manip->initialConfig.setBackgroundColor(100, 100, 100); @@ -29,7 +26,8 @@ int main(int argc, char** argv) { manip->initialConfig.addFlipVertical(); manip->initialConfig.setFrameType(dai::ImgFrame::Type::RGB888p); - camRgb->video.link(manip->inputImage); + auto* rgbOut = camRgb->requestOutput({1920, 1080}); + rgbOut->link(manip->inputImage); manip->out.link(display->input); pipeline.start(); From 7e70e819d8d45e44e2f5fbdd8b7635e2ff39029d Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Thu, 5 Dec 2024 09:10:14 +0100 Subject: [PATCH 06/68] Do not align depth in SpatialDetectionNetwork --- src/pipeline/node/SpatialDetectionNetwork.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pipeline/node/SpatialDetectionNetwork.cpp b/src/pipeline/node/SpatialDetectionNetwork.cpp index 542fbd9f2..d2e1c949f 100644 --- a/src/pipeline/node/SpatialDetectionNetwork.cpp +++ b/src/pipeline/node/SpatialDetectionNetwork.cpp @@ -57,7 +57,7 @@ std::shared_ptr<SpatialDetectionNetwork> SpatialDetectionNetwork::build(const st neuralNetwork->build(camera, nnArchive, fps); detectionParser->setNNArchive(nnArchive); stereo->depth.link(inputDepth); - stereo->setDepthAlign(camera->getBoardSocket()); + // stereo->setDepthAlign(camera->getBoardSocket()); return std::static_pointer_cast<SpatialDetectionNetwork>(shared_from_this()); } From f66b46496866addf2a8ffacf65aa24f168067424 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Fri, 6 Dec 2024 12:13:03 +0100 Subject: [PATCH 07/68] Make aligned images sort of work --- bindings/python/src/pipeline/datatype/ImgFrameBindings.cpp | 1 + cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/bindings/python/src/pipeline/datatype/ImgFrameBindings.cpp b/bindings/python/src/pipeline/datatype/ImgFrameBindings.cpp index 4c9451a7f..facafa0f1 100644 --- a/bindings/python/src/pipeline/datatype/ImgFrameBindings.cpp +++ b/bindings/python/src/pipeline/datatype/ImgFrameBindings.cpp @@ -201,6 +201,7 @@ void bind_imgframe(pybind11::module& m, void* pCallstack) { .def("getSourceWidth", &ImgFrame::getSourceWidth, DOC(dai, ImgFrame, getSourceWidth)) .def("getSourceHeight", &ImgFrame::getSourceHeight, DOC(dai, ImgFrame, getSourceHeight)) .def("getTransformation", [](ImgFrame& msg) {return msg.transformation;}) + .def("validateTransformations", &ImgFrame::validateTransformations, DOC(dai, ImgFrame, validateTransformations)) #ifdef DEPTHAI_HAVE_OPENCV_SUPPORT // The cast function itself does a copy, so we can avoid two copies by always not copying diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 8797c30d5..9b8277ac0 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "b399a12aaf02228147364b7357a738f14fdd6225") +set(DEPTHAI_DEVICE_SIDE_COMMIT "b67e549e5d20ef69df6dffd9d0be859e4f2010e9") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 1a322b52847631b0e80f77cf105b17e3ce63db43 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 9 Dec 2024 11:01:06 +0100 Subject: [PATCH 08/68] Bump rvc2 fw --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 9b8277ac0..6d9210286 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "b67e549e5d20ef69df6dffd9d0be859e4f2010e9") +set(DEPTHAI_DEVICE_SIDE_COMMIT "7c267266bda12666d0b4b93dd6da5df05e95bcaf") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From df389c3556d91335035ed374d7cf73cafe82641d Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 9 Dec 2024 12:21:44 +0100 Subject: [PATCH 09/68] ImgTransformations ImageAlign improvements --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 6d9210286..e683ebe5a 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "7c267266bda12666d0b4b93dd6da5df05e95bcaf") +set(DEPTHAI_DEVICE_SIDE_COMMIT "33c800ee459dd04273f00b174b71560c8e6b82e7") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 2718bbb924037f7c04918588561bcceaf1942a24 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 9 Dec 2024 13:35:50 +0100 Subject: [PATCH 10/68] Added some setters to ImgTransformations --- include/depthai/common/ImgTransformations.hpp | 4 ++++ src/pipeline/datatype/ImgTransformations.cpp | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/depthai/common/ImgTransformations.hpp b/include/depthai/common/ImgTransformations.hpp index 630f99232..55f37e55e 100644 --- a/include/depthai/common/ImgTransformations.hpp +++ b/include/depthai/common/ImgTransformations.hpp @@ -205,6 +205,10 @@ struct ImgTransformation { ImgTransformation& addScale(float scaleX, float scaleY); ImgTransformation& addSrcCrops(const std::vector<dai::RotatedRect>& crops); ImgTransformation& setSize(size_t width, size_t height); + ImgTransformation& setSourceSize(size_t width, size_t height); + ImgTransformation& setIntrinsicMatrix(std::array<std::array<float, 3>, 3> intrinsicMatrix); + ImgTransformation& setDistortionModel(CameraModel model); + ImgTransformation& setDistortionCoefficients(std::vector<float> coefficients); /** * Remap a point from this transformation to another. If the intrinsics are different (e.g. different camera), the function will also use the intrinsics to diff --git a/src/pipeline/datatype/ImgTransformations.cpp b/src/pipeline/datatype/ImgTransformations.cpp index 8fc2fc1e9..de9da30e4 100644 --- a/src/pipeline/datatype/ImgTransformations.cpp +++ b/src/pipeline/datatype/ImgTransformations.cpp @@ -362,6 +362,24 @@ ImgTransformation& ImgTransformation::setSize(size_t width, size_t height) { this->height = height; return *this; } +ImgTransformation& ImgTransformation::setSourceSize(size_t width, size_t height) { + this->srcWidth = width; + this->srcHeight = height; + return *this; +} +ImgTransformation& ImgTransformation::setIntrinsicMatrix(std::array<std::array<float, 3>, 3> intrinsicMatrix) { + sourceIntrinsicMatrix = intrinsicMatrix; + sourceIntrinsicMatrixInv = getMatrixInverse(intrinsicMatrix); + return *this; +} +ImgTransformation& ImgTransformation::setDistortionModel(CameraModel model) { + distortionModel = model; + return *this; +} +ImgTransformation& ImgTransformation::setDistortionCoefficients(std::vector<float> coefficients) { + distortionCoefficients = coefficients; + return *this; +} bool ImgTransformation::isValid() const { return srcWidth > 0 && srcHeight > 0 && width > 0 && height > 0; From 9725f6e55357369d41e1df047e97f1dd933fd7ef Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 9 Dec 2024 16:06:25 +0100 Subject: [PATCH 11/68] Bump rvc4 fw --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index acf9ce4a2..82193e790 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+501780ed87c927eadc6b1505f65731355d1d0ecd") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+985054c5ab25128d137f7205e2aa337d422ddffa") From 276199a8c0632ca3f666d668b34ab203323ad4ed Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Tue, 10 Dec 2024 16:12:38 +0100 Subject: [PATCH 12/68] Add examples --- .../detection_network_remap.py | 0 examples/python/ImageAlign/aligned_remap.py | 65 ++++++++++++++++ .../python/StereoDepth/stereo_depth_remap.py | 76 +++++++++++++++++++ 3 files changed, 141 insertions(+) rename examples/python/{RVC4 => }/DetectionNetwork/detection_network_remap.py (100%) create mode 100644 examples/python/ImageAlign/aligned_remap.py create mode 100644 examples/python/StereoDepth/stereo_depth_remap.py diff --git a/examples/python/RVC4/DetectionNetwork/detection_network_remap.py b/examples/python/DetectionNetwork/detection_network_remap.py similarity index 100% rename from examples/python/RVC4/DetectionNetwork/detection_network_remap.py rename to examples/python/DetectionNetwork/detection_network_remap.py diff --git a/examples/python/ImageAlign/aligned_remap.py b/examples/python/ImageAlign/aligned_remap.py new file mode 100644 index 000000000..af76e5c09 --- /dev/null +++ b/examples/python/ImageAlign/aligned_remap.py @@ -0,0 +1,65 @@ +import numpy as np +import depthai as dai +import cv2 + +def draw_rotated_rectangle(frame, center, size, angle, color, thickness=2): + """ + Draws a rotated rectangle on the given frame. + + Args: + frame (numpy.ndarray): The image/frame to draw on. + center (tuple): The (x, y) coordinates of the rectangle's center. + size (tuple): The (width, height) of the rectangle. + angle (float): The rotation angle of the rectangle in degrees (counter-clockwise). + color (tuple): The color of the rectangle in BGR format (e.g., (0, 255, 0) for green). + thickness (int): The thickness of the rectangle edges. Default is 2. + """ + # Create a rotated rectangle + rect = ((center[0], center[1]), (size[0], size[1]), angle) + + # Get the four vertices of the rotated rectangle + box = cv2.boxPoints(rect) + box = np.int0(box) # Convert to integer coordinates + + # Draw the rectangle on the frame + cv2.polylines(frame, [box], isClosed=True, color=color, thickness=thickness) + +with dai.Pipeline() as pipeline: + monoLeft = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_B) + monoRight = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_C) + align = pipeline.create(dai.node.ImageAlign) + + monoLeftOut = monoLeft.requestOutput((640, 480)) + monoRightOut = monoRight.requestOutput((640, 480)) + + monoLeftOut.link(align.input) + monoRightOut.link(align.inputAlignTo) + + rightOut = monoRightOut.createOutputQueue() + alignOut = align.outputAligned.createOutputQueue() + + pipeline.start() + while pipeline.isRunning(): + rightFrame = rightOut.get() + alignedFrame = alignOut.get() + + print(alignedFrame) + + assert rightFrame.validateTransformations() + assert alignedFrame.validateTransformations() + + right = rightFrame.getCvFrame() + depth = alignedFrame.getCvFrame() + + rect = dai.RotatedRect(dai.Point2f(200, 100), dai.Size2f(200, 100), 10) + remappedRect = rightFrame.getTransformation().remapRectTo(alignedFrame.getTransformation(), rect) + + draw_rotated_rectangle(right, (rect.center.x, rect.center.y), (rect.size.width, rect.size.height), rect.angle, (255, 0, 0)) + draw_rotated_rectangle(depth, (remappedRect.center.x, remappedRect.center.y), (remappedRect.size.width, remappedRect.size.height), remappedRect.angle, (255, 0, 0)) + + cv2.imshow("right", right) + cv2.imshow("aligned", depth) + + if cv2.waitKey(1) == ord('q'): + break + pipeline.stop() diff --git a/examples/python/StereoDepth/stereo_depth_remap.py b/examples/python/StereoDepth/stereo_depth_remap.py new file mode 100644 index 000000000..4e1f9700a --- /dev/null +++ b/examples/python/StereoDepth/stereo_depth_remap.py @@ -0,0 +1,76 @@ +import depthai as dai +import cv2 +import numpy as np + +def draw_rotated_rectangle(frame, center, size, angle, color, thickness=2): + """ + Draws a rotated rectangle on the given frame. + + Args: + frame (numpy.ndarray): The image/frame to draw on. + center (tuple): The (x, y) coordinates of the rectangle's center. + size (tuple): The (width, height) of the rectangle. + angle (float): The rotation angle of the rectangle in degrees (counter-clockwise). + color (tuple): The color of the rectangle in BGR format (e.g., (0, 255, 0) for green). + thickness (int): The thickness of the rectangle edges. Default is 2. + """ + # Create a rotated rectangle + rect = ((center[0], center[1]), (size[0], size[1]), angle) + + # Get the four vertices of the rotated rectangle + box = cv2.boxPoints(rect) + box = np.int0(box) # Convert to integer coordinates + + # Draw the rectangle on the frame + cv2.polylines(frame, [box], isClosed=True, color=color, thickness=thickness) + +def processDepthFrame(depthFrame): + depth_downscaled = depthFrame[::4] + if np.all(depth_downscaled == 0): + min_depth = 0 + else: + min_depth = np.percentile(depth_downscaled[depth_downscaled != 0], 1) + max_depth = np.percentile(depth_downscaled, 99) + depthFrameColor = np.interp(depthFrame, (min_depth, max_depth), (0, 255)).astype(np.uint8) + return cv2.applyColorMap(depthFrameColor, cv2.COLORMAP_HOT) + +with dai.Pipeline() as pipeline: + monoLeft = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_B) + monoRight = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_C) + stereo = pipeline.create(dai.node.StereoDepth) + + stereo.setDefaultProfilePreset(dai.node.StereoDepth.PresetMode.HIGH_DENSITY) + stereo.setDepthAlign(dai.CameraBoardSocket.RGB) + + monoLeftOut = monoLeft.requestOutput((640, 480)) + monoRightOut = monoRight.requestOutput((640, 480)) + + monoLeftOut.link(stereo.left) + monoRightOut.link(stereo.right) + + rightOut = monoRightOut.createOutputQueue() + stereoOut = stereo.depth.createOutputQueue() + + pipeline.start() + while pipeline.isRunning(): + rightFrame = rightOut.get() + stereoFrame = stereoOut.get() + + assert rightFrame.getTransformation().isValid() + assert stereoFrame.getTransformation().isValid() + + right = rightFrame.getCvFrame() + depth = processDepthFrame(stereoFrame.getCvFrame()) + + rect = dai.RotatedRect(dai.Point2f(300, 200), dai.Size2f(200, 100), 10) + remappedRect = rightFrame.getTransformation().remapRectTo(stereoFrame.getTransformation(), rect) + + draw_rotated_rectangle(right, (rect.center.x, rect.center.y), (rect.size.width, rect.size.height), rect.angle, (255, 0, 0)) + draw_rotated_rectangle(depth, (remappedRect.center.x, remappedRect.center.y), (remappedRect.size.width, remappedRect.size.height), remappedRect.angle, (255, 0, 0)) + + cv2.imshow("right", right) + cv2.imshow("depth", depth) + + if cv2.waitKey(1) == ord('q'): + break + pipeline.stop() From 4b8acf9fadf31ca33fee61b2aeec74ca1f198985 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Tue, 10 Dec 2024 16:26:04 +0100 Subject: [PATCH 13/68] Bump rvc2 fw --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index e683ebe5a..83836b1a9 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "33c800ee459dd04273f00b174b71560c8e6b82e7") +set(DEPTHAI_DEVICE_SIDE_COMMIT "f8c26a69711ffb3765226f7b373c9929ae97e829") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 7f3ae782f5943a2f8cab10f84fffe983a3735b5c Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Tue, 10 Dec 2024 20:37:42 +0200 Subject: [PATCH 14/68] Add enableUndistortion flag to ImgFrameCapabilities --- .../python/src/capabilities/ImgFrameCapabilityBindings.cpp | 1 + include/depthai/capabilities/ImgFrameCapability.hpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bindings/python/src/capabilities/ImgFrameCapabilityBindings.cpp b/bindings/python/src/capabilities/ImgFrameCapabilityBindings.cpp index 3bd7807d9..d9f3a53bd 100644 --- a/bindings/python/src/capabilities/ImgFrameCapabilityBindings.cpp +++ b/bindings/python/src/capabilities/ImgFrameCapabilityBindings.cpp @@ -27,6 +27,7 @@ void ImgFrameCapabilityBindings::bind(pybind11::module& m, void* pCallstack) { .def_readwrite("fps", &ImgFrameCapability::fps) .def_readwrite("type", &ImgFrameCapability::type) .def_readwrite("resizeMode", &ImgFrameCapability::resizeMode) + .def_readwrite("enableUndistortion", &ImgFrameCapability::enableUndistortion) ; } diff --git a/include/depthai/capabilities/ImgFrameCapability.hpp b/include/depthai/capabilities/ImgFrameCapability.hpp index 8a8f560d8..36122f9ac 100644 --- a/include/depthai/capabilities/ImgFrameCapability.hpp +++ b/include/depthai/capabilities/ImgFrameCapability.hpp @@ -46,9 +46,10 @@ class ImgFrameCapability : public CapabilityCRTP<Capability, ImgFrameCapability> CapabilityRange<float> fps; std::optional<ImgFrame::Type> type; ImgResizeMode resizeMode{ImgResizeMode::CROP}; + bool enableUndistortion = true; // TODO(jakgra) add optional CapabilityRange fov / max-min horiz. / vertical crop; - DEPTHAI_SERIALIZE(ImgFrameCapability, size, fps, type, resizeMode); + DEPTHAI_SERIALIZE(ImgFrameCapability, size, fps, type, resizeMode, enableUndistortion); private: class Impl; From f19c0a02386ff220615f957f49406dcd75a59eb1 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Tue, 10 Dec 2024 20:41:42 +0200 Subject: [PATCH 15/68] RVC2: Update FW --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index a0496af48..74feb5165 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "5ea287b8b29e9cdefed2b5038be8ba18019408bf") +set(DEPTHAI_DEVICE_SIDE_COMMIT "9ce144f0a61f6b83a31bd3716085e1c5438ae0bd") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 54efee8e5bdeafe178cc10107847cdf35b565bb1 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 11 Dec 2024 11:30:43 +0100 Subject: [PATCH 16/68] Bump rvc2 fw --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 83836b1a9..5588c65a0 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "f8c26a69711ffb3765226f7b373c9929ae97e829") +set(DEPTHAI_DEVICE_SIDE_COMMIT "eb2e8d316d9be5e867ce9b10d982e6e453d78bd1") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 6ed376990d57a2156588a0e8d8b2abf5f763294c Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 11 Dec 2024 11:49:30 +0100 Subject: [PATCH 17/68] Bump rvc4 fw --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 82193e790..5476d8489 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+985054c5ab25128d137f7205e2aa337d422ddffa") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+95a37dca4888e8721aeb46ddaf89c0078c748f03") From de501944fac4e7c64c10853e0a7310e5c22b4419 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 11 Dec 2024 12:42:23 +0100 Subject: [PATCH 18/68] Re-add depth align to spatial detection network --- src/pipeline/node/SpatialDetectionNetwork.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pipeline/node/SpatialDetectionNetwork.cpp b/src/pipeline/node/SpatialDetectionNetwork.cpp index d2e1c949f..542fbd9f2 100644 --- a/src/pipeline/node/SpatialDetectionNetwork.cpp +++ b/src/pipeline/node/SpatialDetectionNetwork.cpp @@ -57,7 +57,7 @@ std::shared_ptr<SpatialDetectionNetwork> SpatialDetectionNetwork::build(const st neuralNetwork->build(camera, nnArchive, fps); detectionParser->setNNArchive(nnArchive); stereo->depth.link(inputDepth); - // stereo->setDepthAlign(camera->getBoardSocket()); + stereo->setDepthAlign(camera->getBoardSocket()); return std::static_pointer_cast<SpatialDetectionNetwork>(shared_from_this()); } From b4f0772e5d61ea389dd3c73b6e7ee2a9e57da4a9 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 11 Dec 2024 13:34:02 +0100 Subject: [PATCH 19/68] Clamp remapped rect in SpatialDetectionNetwork --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 5588c65a0..d87d4f706 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "eb2e8d316d9be5e867ce9b10d982e6e453d78bd1") +set(DEPTHAI_DEVICE_SIDE_COMMIT "645253b14a01fdf9808192714f540e475ff30780") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 9da98f4fcecaadfdea2bfe7a86075ad3c5374379 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Wed, 11 Dec 2024 19:43:08 +0200 Subject: [PATCH 20/68] RVC2: Update FW, change letterboxing behavior --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 74feb5165..2aa6c262f 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "9ce144f0a61f6b83a31bd3716085e1c5438ae0bd") +set(DEPTHAI_DEVICE_SIDE_COMMIT "05657f1f9b182d7a75471c9b82388c5570cecf6c") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 3fa2ba274e1a27a09d2d2e1b234bd837953282f2 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Thu, 12 Dec 2024 12:10:51 +0100 Subject: [PATCH 21/68] ImgTransformations fixes for aligned depth --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index d87d4f706..6672bf6c2 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "645253b14a01fdf9808192714f540e475ff30780") +set(DEPTHAI_DEVICE_SIDE_COMMIT "7b539a294865f427bf78c2952a4e921a8fbcbbf5") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 884cc0654bdf9cc4fd225aaa4fd8654270b79fc4 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Fri, 13 Dec 2024 09:08:51 +0100 Subject: [PATCH 22/68] Bump rvc2 fw with merge [no ci] --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 6672bf6c2..5fe21bab7 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "7b539a294865f427bf78c2952a4e921a8fbcbbf5") +set(DEPTHAI_DEVICE_SIDE_COMMIT "23c307c94db6e7a58eabbe100381ec7fbd9879d9") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 23b30117d6c1927eb35ec6a5dd4c8b863c94970c Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Fri, 13 Dec 2024 09:14:57 +0100 Subject: [PATCH 23/68] Bump rvc4 fw with merge --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 5476d8489..5d3f541ea 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+95a37dca4888e8721aeb46ddaf89c0078c748f03") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+ead877fbab2087a4ef7c8a7953da65d5690b2f59") From 8d3db28168942517fc2514f659c12a7f23223a37 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Fri, 13 Dec 2024 11:36:19 +0100 Subject: [PATCH 24/68] FW: fix video encoder crash --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 5fe21bab7..4127572e8 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "23c307c94db6e7a58eabbe100381ec7fbd9879d9") +set(DEPTHAI_DEVICE_SIDE_COMMIT "01251af7e2411b61b825c898cfe201b70343daed") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From dfbccf660417242b28329162069404fb82c2a700 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Fri, 13 Dec 2024 14:59:51 +0100 Subject: [PATCH 25/68] FW: fix SpatialDetectionNetwork roi error --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 4127572e8..2a0b02c03 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "01251af7e2411b61b825c898cfe201b70343daed") +set(DEPTHAI_DEVICE_SIDE_COMMIT "ca1de34f09fc871e63db84fe229be44c276f5117") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 8cec2b8351737a780ae7fdf8c73d7c4bf50c5174 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 16 Dec 2024 12:56:07 +0100 Subject: [PATCH 26/68] FW: Fix transformationdata in aligned stereo depth images --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- .../python/StereoDepth/stereo_depth_remap.py | 26 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 2a0b02c03..b3b27b736 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "ca1de34f09fc871e63db84fe229be44c276f5117") +set(DEPTHAI_DEVICE_SIDE_COMMIT "989e418f7f5b64d35659085309f208560425257b") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") diff --git a/examples/python/StereoDepth/stereo_depth_remap.py b/examples/python/StereoDepth/stereo_depth_remap.py index 4e1f9700a..8d213a086 100644 --- a/examples/python/StereoDepth/stereo_depth_remap.py +++ b/examples/python/StereoDepth/stereo_depth_remap.py @@ -19,7 +19,7 @@ def draw_rotated_rectangle(frame, center, size, angle, color, thickness=2): # Get the four vertices of the rotated rectangle box = cv2.boxPoints(rect) - box = np.int0(box) # Convert to integer coordinates + box = np.intp(box) # Convert to integer coordinates # Draw the rectangle on the frame cv2.polylines(frame, [box], isClosed=True, color=color, thickness=thickness) @@ -35,12 +35,16 @@ def processDepthFrame(depthFrame): return cv2.applyColorMap(depthFrameColor, cv2.COLORMAP_HOT) with dai.Pipeline() as pipeline: + color = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_A) monoLeft = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_B) monoRight = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_C) stereo = pipeline.create(dai.node.StereoDepth) stereo.setDefaultProfilePreset(dai.node.StereoDepth.PresetMode.HIGH_DENSITY) - stereo.setDepthAlign(dai.CameraBoardSocket.RGB) + # stereo.setDepthAlign(dai.CameraBoardSocket.CAM_A) + # stereo.setOutputSize(640, 400) + + colorCamOut = color.requestOutput((640, 480)) monoLeftOut = monoLeft.requestOutput((640, 480)) monoRightOut = monoRight.requestOutput((640, 480)) @@ -48,27 +52,31 @@ def processDepthFrame(depthFrame): monoLeftOut.link(stereo.left) monoRightOut.link(stereo.right) + colorOut = colorCamOut.createOutputQueue() rightOut = monoRightOut.createOutputQueue() stereoOut = stereo.depth.createOutputQueue() pipeline.start() while pipeline.isRunning(): - rightFrame = rightOut.get() + colorFrame = colorOut.get() stereoFrame = stereoOut.get() - assert rightFrame.getTransformation().isValid() - assert stereoFrame.getTransformation().isValid() + assert colorFrame.validateTransformations() + assert stereoFrame.validateTransformations() - right = rightFrame.getCvFrame() + clr = colorFrame.getCvFrame() depth = processDepthFrame(stereoFrame.getCvFrame()) rect = dai.RotatedRect(dai.Point2f(300, 200), dai.Size2f(200, 100), 10) - remappedRect = rightFrame.getTransformation().remapRectTo(stereoFrame.getTransformation(), rect) + remappedRect = colorFrame.getTransformation().remapRectTo(stereoFrame.getTransformation(), rect) + + print(f"Original rect x: {rect.center.x} y: {rect.center.y} width: {rect.size.width} height: {rect.size.height} angle: {rect.angle}") + print(f"Remapped rect x: {remappedRect.center.x} y: {remappedRect.center.y} width: {remappedRect.size.width} height: {remappedRect.size.height} angle: {remappedRect.angle}") - draw_rotated_rectangle(right, (rect.center.x, rect.center.y), (rect.size.width, rect.size.height), rect.angle, (255, 0, 0)) + draw_rotated_rectangle(clr, (rect.center.x, rect.center.y), (rect.size.width, rect.size.height), rect.angle, (255, 0, 0)) draw_rotated_rectangle(depth, (remappedRect.center.x, remappedRect.center.y), (remappedRect.size.width, remappedRect.size.height), remappedRect.angle, (255, 0, 0)) - cv2.imshow("right", right) + cv2.imshow("color", clr) cv2.imshow("depth", depth) if cv2.waitKey(1) == ord('q'): From 8f25dfe50725ad9065633a145a4b94be7a37cbcb Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Tue, 17 Dec 2024 12:05:00 +0100 Subject: [PATCH 27/68] FW: Add sanity check when copying transformation data --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index b3b27b736..5d24cf820 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "989e418f7f5b64d35659085309f208560425257b") +set(DEPTHAI_DEVICE_SIDE_COMMIT "1927a33b9aef6db14c36002071bc03ca527284d1") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From ed0adc1bae9258c5f90c436b04995c79a7c7efd0 Mon Sep 17 00:00:00 2001 From: Matevz Morato <matevz.morato@gmail.com> Date: Tue, 17 Dec 2024 18:56:58 +0100 Subject: [PATCH 28/68] Add missing bindings --- .../python/src/pipeline/datatype/ImgFrameBindings.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bindings/python/src/pipeline/datatype/ImgFrameBindings.cpp b/bindings/python/src/pipeline/datatype/ImgFrameBindings.cpp index facafa0f1..6752646e8 100644 --- a/bindings/python/src/pipeline/datatype/ImgFrameBindings.cpp +++ b/bindings/python/src/pipeline/datatype/ImgFrameBindings.cpp @@ -144,9 +144,20 @@ void bind_imgframe(pybind11::module& m, void* pCallstack) { .def("getSourceIntrinsicMatrixInv", &ImgTransformation::getSourceIntrinsicMatrixInv) .def("getIntrinsicMatrix", &ImgTransformation::getIntrinsicMatrix) .def("getIntrinsicMatrixInv", &ImgTransformation::getIntrinsicMatrixInv) + .def("getDistortionModel", &ImgTransformation::getDistortionModel, DOC(dai, ImgTransformation, getDistortionModel)) + .def("getDistortionCoefficients", &ImgTransformation::getDistortionCoefficients, DOC(dai, ImgTransformation, getDistortionCoefficients)) + .def("getSrcCrops", &ImgTransformation::getSrcCrops, DOC(dai, ImgTransformation, getSrcCrops)) + .def("getSrcMaskPt", &ImgTransformation::getSrcMaskPt, py::arg("x"), py::arg("y"), DOC(dai, ImgTransformation, getSrcMaskPt)) + .def("getDstMaskPt", &ImgTransformation::getDstMaskPt, py::arg("x"), py::arg("y"), DOC(dai, ImgTransformation, getDstMaskPt)) .def("getDFov", &ImgTransformation::getDFov, py::arg("source") = false) .def("getHFov", &ImgTransformation::getHFov, py::arg("source") = false) .def("getVFov", &ImgTransformation::getVFov, py::arg("source") = false) + .def("setIntrinsicMatrix", &ImgTransformation::setIntrinsicMatrix, py::arg("intrinsicMatrix"), DOC(dai, ImgTransformation, setIntrinsicMatrix)) + .def("setDistortionModel", &ImgTransformation::setDistortionModel, py::arg("model"), DOC(dai, ImgTransformation, setDistortionModel)) + .def("setDistortionCoefficients", + &ImgTransformation::setDistortionCoefficients, + py::arg("coefficients"), + DOC(dai, ImgTransformation, setDistortionCoefficients)) .def("addTransformation", &ImgTransformation::addTransformation, py::arg("matrix"), DOC(dai, ImgTransformation, addTransformation)) .def("addCrop", &ImgTransformation::addCrop, py::arg("x"), py::arg("y"), py::arg("width"), py::arg("height"), DOC(dai, ImgTransformation, addCrop)) .def("addPadding", From 4ca93ad75aecb80f16c2ccf45a128eef3727e6da Mon Sep 17 00:00:00 2001 From: Matevz Morato <matevz.morato@gmail.com> Date: Tue, 17 Dec 2024 20:57:18 +0100 Subject: [PATCH 29/68] Update the depth_align.py example and bump RVC2 FW with fixed distortion coef --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- examples/python/ImageAlign/depth_align.py | 19 +++---------------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 5d24cf820..fd94c04e1 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "1927a33b9aef6db14c36002071bc03ca527284d1") +set(DEPTHAI_DEVICE_SIDE_COMMIT "9f30ea80870a0d82ac4b045116ed68f44dbf9bcd") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") diff --git a/examples/python/ImageAlign/depth_align.py b/examples/python/ImageAlign/depth_align.py index 3ca4eccee..2a461e4b3 100755 --- a/examples/python/ImageAlign/depth_align.py +++ b/examples/python/ImageAlign/depth_align.py @@ -25,15 +25,7 @@ def getFps(self): return 0 return (len(self.frameTimes) - 1) / (self.frameTimes[-1] - self.frameTimes[0]) -device = dai.Device() - -calibrationHandler = device.readCalibration() -rgbDistortion = calibrationHandler.getDistortionCoefficients(RGB_SOCKET) -distortionModel = calibrationHandler.getDistortionModel(RGB_SOCKET) -if distortionModel != dai.CameraModel.Perspective: - raise RuntimeError("Unsupported distortion model for RGB camera. This example supports only Perspective model.") - -pipeline = dai.Pipeline(device) +pipeline = dai.Pipeline() platform = pipeline.getDefaultDevice().getPlatform() @@ -47,7 +39,6 @@ def getFps(self): align = pipeline.create(dai.node.ImageAlign) stereo.setExtendedDisparity(True) - sync.setSyncThreshold(timedelta(seconds=1/(2*FPS))) rgbOut = camRgb.requestOutput(size = (1280, 960), fps = FPS) @@ -142,14 +133,10 @@ def updateBlendWeights(percentRgb): # Blend when both received if frameDepth is not None: cvFrame = frameRgb.getCvFrame() - - # Undistort the rgb frame - rgbIntrinsics = calibrationHandler.getCameraIntrinsics(RGB_SOCKET, int(cvFrame.shape[1]), int(cvFrame.shape[0])) - cvFrameUndistorted = cv2.undistort( cvFrame, - np.array(rgbIntrinsics), - np.array(rgbDistortion), + np.array(frameRgb.getTransformation().getIntrinsicMatrix()), + np.array(frameRgb.getTransformation().getDistortionCoefficients()), ) # Colorize the aligned depth alignedDepthColorized = colorizeDepth(frameDepth.getFrame()) From 461c9e82c54d226855e2a2ed03b149ff915ee7d5 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 18 Dec 2024 11:00:22 +0100 Subject: [PATCH 30/68] Fix ImageManipV2 crash --- include/depthai/utility/ImageManipV2Impl.hpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/include/depthai/utility/ImageManipV2Impl.hpp b/include/depthai/utility/ImageManipV2Impl.hpp index f145a76cb..c7e7cf3b5 100644 --- a/include/depthai/utility/ImageManipV2Impl.hpp +++ b/include/depthai/utility/ImageManipV2Impl.hpp @@ -2811,15 +2811,12 @@ void Warp<ImageManipBuffer, ImageManipData>::build(const FrameSpecs srcFrameSpec sourceMaxY = inHeight; for(const auto& corners : srcCorners) { auto [minx, maxx, miny, maxy] = getOuterRect(std::vector<std::array<float, 2>>(corners.begin(), corners.end())); - minx = std::max(minx, 0.0f); - maxx = std::min(maxx, (float)inWidth); - miny = std::max(miny, 0.0f); - maxy = std::min(maxy, (float)inHeight); sourceMinX = std::max(sourceMinX, (size_t)std::floor(minx)); sourceMinY = std::max(sourceMinY, (size_t)std::floor(miny)); sourceMaxX = std::min(sourceMaxX, (size_t)std::ceil(maxx)); sourceMaxY = std::min(sourceMaxY, (size_t)std::ceil(maxy)); } + if(sourceMinX >= sourceMaxX || sourceMinY >= sourceMaxY) throw std::runtime_error("Initial crop is outside the source image"); #if !DEPTHAI_IMAGEMANIPV2_OPENCV && !DEPTHAI_IMAGEMANIPV2_FASTCV || !defined(DEPTHAI_HAVE_OPENCV_SUPPORT) && !defined(DEPTHAI_HAVE_FASTCV_SUPPORT) const uint32_t outWidth = dstFrameSpecs.width; From 824bbae11e500b072db0fd82f866588b9e6e6e59 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 18 Dec 2024 11:01:27 +0100 Subject: [PATCH 31/68] Bump rvc2 fw --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index fd94c04e1..0d92ba775 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "9f30ea80870a0d82ac4b045116ed68f44dbf9bcd") +set(DEPTHAI_DEVICE_SIDE_COMMIT "a37bb5a86ba590c4d860edf8fd3896aa0d737ef0") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 741a6a875d3e8e981d5c61d23e9df0dfa76a2c0b Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 18 Dec 2024 11:32:22 +0100 Subject: [PATCH 32/68] Bump rvc4 fw --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 5d3f541ea..dbabfeda8 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+ead877fbab2087a4ef7c8a7953da65d5690b2f59") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+45db9c5c784e18e71e22314685d0fbae76bbfbf4") From 80793f6e7a96ee8d77982a887dea0d8d4a0f5e7a Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Tue, 24 Dec 2024 12:05:33 +0100 Subject: [PATCH 33/68] FW: hopefully fix videnc crash --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 0d92ba775..e986938f8 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "a37bb5a86ba590c4d860edf8fd3896aa0d737ef0") +set(DEPTHAI_DEVICE_SIDE_COMMIT "0badbf0506cf5b452fc7b449da6953107661f2d5") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 26ba7b94e67b9062e0fb46170cf91a744edcfae9 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Tue, 24 Dec 2024 12:33:41 +0100 Subject: [PATCH 34/68] FW: new attempt at fixing videnc crash on RVC2 --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index e986938f8..5b8052d03 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "0badbf0506cf5b452fc7b449da6953107661f2d5") +set(DEPTHAI_DEVICE_SIDE_COMMIT "fd872d7b445d70304d585652dadb8d25f5ec52d6") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 9ec8927b35504f4f01dda702326b02b86c3c15ec Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 6 Jan 2025 11:31:33 +0100 Subject: [PATCH 35/68] Fix encoded_frame_tests [no ci] --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 5b8052d03..537abfc8a 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "fd872d7b445d70304d585652dadb8d25f5ec52d6") +set(DEPTHAI_DEVICE_SIDE_COMMIT "51bc2defa0658f5187228cdb6801134bbc37ea04") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 223ef9773119aa358d32d2a800e32db21276cc83 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 6 Jan 2025 11:33:58 +0100 Subject: [PATCH 36/68] Bump rvc4 fw --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index dbabfeda8..8a7ff23de 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+45db9c5c784e18e71e22314685d0fbae76bbfbf4") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+84f9b820521592916f256ac26eb3ff79b5e7f6af") From 06b74c2a2bfeed8b7bf3a683336456cd0f517e7e Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 6 Jan 2025 12:30:22 +0100 Subject: [PATCH 37/68] FW: Add missing header --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 537abfc8a..276c6706e 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "51bc2defa0658f5187228cdb6801134bbc37ea04") +set(DEPTHAI_DEVICE_SIDE_COMMIT "cd3ddb9d67f8e2a5007de6bf27818ec7c5916e24") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 3a6a3b67d36faf4de0ea93f085f8cce407a44005 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 6 Jan 2025 14:07:27 +0100 Subject: [PATCH 38/68] FW: Fix imagemanipv2 issue on RVC2 --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 276c6706e..37eeee883 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "cd3ddb9d67f8e2a5007de6bf27818ec7c5916e24") +set(DEPTHAI_DEVICE_SIDE_COMMIT "435d0b10d52cb3e78b30f64b9a6e2e28da28cc76") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 025e92522982c4e25eeb3ccfebf57885ddab205a Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 6 Jan 2025 14:47:54 +0100 Subject: [PATCH 39/68] Fix imagemanipv2 issue --- include/depthai/utility/ImageManipV2Impl.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/depthai/utility/ImageManipV2Impl.hpp b/include/depthai/utility/ImageManipV2Impl.hpp index c7e7cf3b5..70d882819 100644 --- a/include/depthai/utility/ImageManipV2Impl.hpp +++ b/include/depthai/utility/ImageManipV2Impl.hpp @@ -2811,8 +2811,8 @@ void Warp<ImageManipBuffer, ImageManipData>::build(const FrameSpecs srcFrameSpec sourceMaxY = inHeight; for(const auto& corners : srcCorners) { auto [minx, maxx, miny, maxy] = getOuterRect(std::vector<std::array<float, 2>>(corners.begin(), corners.end())); - sourceMinX = std::max(sourceMinX, (size_t)std::floor(minx)); - sourceMinY = std::max(sourceMinY, (size_t)std::floor(miny)); + sourceMinX = std::max(sourceMinX, (size_t)std::floor(std::max(minx, 0.f))); + sourceMinY = std::max(sourceMinY, (size_t)std::floor(std::max(miny, 0.f)); sourceMaxX = std::min(sourceMaxX, (size_t)std::ceil(maxx)); sourceMaxY = std::min(sourceMaxY, (size_t)std::ceil(maxy)); } From 04c1f6582cd641b7e7975304c8c6c9653d0b2261 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 6 Jan 2025 14:55:59 +0100 Subject: [PATCH 40/68] Fix build issue [no ci] --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- include/depthai/utility/ImageManipV2Impl.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 8a7ff23de..832a7e34f 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+84f9b820521592916f256ac26eb3ff79b5e7f6af") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+0b0d86ec3ccb46a5830460fd73b8e8379dd6fd47") diff --git a/include/depthai/utility/ImageManipV2Impl.hpp b/include/depthai/utility/ImageManipV2Impl.hpp index 70d882819..372b604b4 100644 --- a/include/depthai/utility/ImageManipV2Impl.hpp +++ b/include/depthai/utility/ImageManipV2Impl.hpp @@ -2812,7 +2812,7 @@ void Warp<ImageManipBuffer, ImageManipData>::build(const FrameSpecs srcFrameSpec for(const auto& corners : srcCorners) { auto [minx, maxx, miny, maxy] = getOuterRect(std::vector<std::array<float, 2>>(corners.begin(), corners.end())); sourceMinX = std::max(sourceMinX, (size_t)std::floor(std::max(minx, 0.f))); - sourceMinY = std::max(sourceMinY, (size_t)std::floor(std::max(miny, 0.f)); + sourceMinY = std::max(sourceMinY, (size_t)std::floor(std::max(miny, 0.f))); sourceMaxX = std::min(sourceMaxX, (size_t)std::ceil(maxx)); sourceMaxY = std::min(sourceMaxY, (size_t)std::ceil(maxy)); } From 17125f9d60314770e9b12df0eb18270cbac7b42e Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 6 Jan 2025 15:14:20 +0100 Subject: [PATCH 41/68] Bump rvc4 fw --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 832a7e34f..487ddb2ed 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+0b0d86ec3ccb46a5830460fd73b8e8379dd6fd47") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+38fbf795d3d5335f409db0247c9cfbada0e66c49") From 49e401b0c521e32d4d445a2370d74df608f8c10e Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Tue, 7 Jan 2025 13:06:31 +0100 Subject: [PATCH 42/68] Add test --- examples/python/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/python/CMakeLists.txt b/examples/python/CMakeLists.txt index 7ac0f52e6..e31a0c93a 100644 --- a/examples/python/CMakeLists.txt +++ b/examples/python/CMakeLists.txt @@ -147,6 +147,8 @@ dai_set_example_test_labels(april_tags_replay ondevice rvc2_all rvc4 ci) ## Detection network add_python_example(detection_network DetectionNetwork/detection_network.py) dai_set_example_test_labels(detection_network ondevice rvc2_all rvc4 ci) +add_python_example(detection_network_remap DetectionNetwork/detection_network_remap.py) +dai_set_example_test_labels(detection_network ondevice rvc2_all rvc4 ci) ## Host nodes add_python_example(display HostNodes/display.py) From 46f478f2867dc7784b69631d7450603a7d1d4255 Mon Sep 17 00:00:00 2001 From: Matevz Morato <matevz.morato@gmail.com> Date: Tue, 7 Jan 2025 15:36:50 +0100 Subject: [PATCH 43/68] Colorize frame more generically --- .../detection_network_remap.py | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/examples/python/DetectionNetwork/detection_network_remap.py b/examples/python/DetectionNetwork/detection_network_remap.py index d872fb737..f533475ec 100644 --- a/examples/python/DetectionNetwork/detection_network_remap.py +++ b/examples/python/DetectionNetwork/detection_network_remap.py @@ -4,6 +4,33 @@ import depthai as dai import numpy as np +def colorizeDepth(frameDepth): + invalidMask = frameDepth == 0 + # Log the depth, minDepth and maxDepth + try: + minDepth = np.percentile(frameDepth[frameDepth != 0], 3) + maxDepth = np.percentile(frameDepth[frameDepth != 0], 95) + logDepth = np.log(frameDepth, where=frameDepth != 0) + logMinDepth = np.log(minDepth) + logMaxDepth = np.log(maxDepth) + np.nan_to_num(logDepth, copy=False, nan=logMinDepth) + # Clip the values to be in the 0-255 range + logDepth = np.clip(logDepth, logMinDepth, logMaxDepth) + + # Interpolate only valid logDepth values, setting the rest based on the mask + depthFrameColor = np.interp(logDepth, (logMinDepth, logMaxDepth), (0, 255)) + depthFrameColor = np.nan_to_num(depthFrameColor) + depthFrameColor = depthFrameColor.astype(np.uint8) + depthFrameColor = cv2.applyColorMap(depthFrameColor, cv2.COLORMAP_JET) + # Set invalid depth pixels to black + depthFrameColor[invalidMask] = 0 + except IndexError: + # Frame is likely empty + depthFrameColor = np.zeros((frameDepth.shape[0], frameDepth.shape[1], 3), dtype=np.uint8) + except Exception as e: + raise e + return depthFrameColor + # Create pipeline with dai.Pipeline() as pipeline: cameraNode = pipeline.create(dai.node.Camera).build() @@ -35,8 +62,7 @@ def displayFrame(name: str, frame: dai.ImgFrame, imgDetections: dai.ImgDetection assert imgDetections.getTransformation() is not None cvFrame = frame.getFrame() if frame.getType() == dai.ImgFrame.Type.RAW16 else frame.getCvFrame() if(frame.getType() == dai.ImgFrame.Type.RAW16): - cvFrame = (cvFrame * (255 / stereo.initialConfig.getMaxDisparity())).astype(np.uint8) - cvFrame = cv2.applyColorMap(cvFrame, cv2.COLORMAP_JET) + cvFrame = colorizeDepth(cvFrame) for detection in imgDetections.detections: # Get the shape of the frame from which the detections originated for denormalization normShape = imgDetections.getTransformation().getSize() From 7278810ac0a2c73efa9cd8d6e031c98c5cc37776 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Tue, 7 Jan 2025 17:28:30 +0200 Subject: [PATCH 44/68] Update FW: Merge with latest v3_develop --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index a0496af48..2a0813719 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "5ea287b8b29e9cdefed2b5038be8ba18019408bf") +set(DEPTHAI_DEVICE_SIDE_COMMIT "a82fba9868fd4af0ef41fce646b56bde88bcb247") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 9c8a87da4f84633083ab1337e960222b35f9b76f Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Wed, 8 Jan 2025 11:40:29 +0100 Subject: [PATCH 45/68] Bump rvc2 fw --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 37eeee883..a0f907a1b 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "435d0b10d52cb3e78b30f64b9a6e2e28da28cc76") +set(DEPTHAI_DEVICE_SIDE_COMMIT "9626f5a66abd91139233a6fef38a073bfe981120") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 633467807850201bb3e2078ffe74debef4f2aaab Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Wed, 8 Jan 2025 13:42:41 +0200 Subject: [PATCH 46/68] Update RVC4 FW --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index db0536b8d..8d35bdc58 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+6fc71e8674fe7a520b93f4370cb157805f0bc0f2") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+6a56462c5dd276487cdd046ecc62d67160257daf") From 0ebfe9a30d8119d6fa5dfcb52fe2ae2de77d0c69 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Thu, 9 Jan 2025 12:14:19 +0100 Subject: [PATCH 47/68] Add example for transformationdata [no ci] --- examples/python/CMakeLists.txt | 3 + examples/python/ImageAlign/aligned_remap.py | 65 ----------------- .../python/ImageManip/image_manip_v2_remap.py | 69 +++++++++++++++++++ 3 files changed, 72 insertions(+), 65 deletions(-) delete mode 100644 examples/python/ImageAlign/aligned_remap.py create mode 100644 examples/python/ImageManip/image_manip_v2_remap.py diff --git a/examples/python/CMakeLists.txt b/examples/python/CMakeLists.txt index e31a0c93a..f6969f8f5 100644 --- a/examples/python/CMakeLists.txt +++ b/examples/python/CMakeLists.txt @@ -164,6 +164,9 @@ dai_set_example_test_labels(image_manip_mod ondevice rvc2_all rvc4 ci) add_python_example(image_manip_resize ImageManip/image_manip_v2_resize.py) dai_set_example_test_labels(image_manip_resize ondevice rvc2_all rvc4 ci) +add_python_example(image_manip_remap ImageManip/image_manip_v2_remap.py) +dai_set_example_test_labels(image_manip_remap ondevice rvc2_all rvc4 ci) + ## Misc add_python_example(reconnect_callback Misc/AutoReconnect/reconnect_callback.py) dai_set_example_test_labels(reconnect_callback ondevice rvc2_all rvc4 ci) diff --git a/examples/python/ImageAlign/aligned_remap.py b/examples/python/ImageAlign/aligned_remap.py deleted file mode 100644 index af76e5c09..000000000 --- a/examples/python/ImageAlign/aligned_remap.py +++ /dev/null @@ -1,65 +0,0 @@ -import numpy as np -import depthai as dai -import cv2 - -def draw_rotated_rectangle(frame, center, size, angle, color, thickness=2): - """ - Draws a rotated rectangle on the given frame. - - Args: - frame (numpy.ndarray): The image/frame to draw on. - center (tuple): The (x, y) coordinates of the rectangle's center. - size (tuple): The (width, height) of the rectangle. - angle (float): The rotation angle of the rectangle in degrees (counter-clockwise). - color (tuple): The color of the rectangle in BGR format (e.g., (0, 255, 0) for green). - thickness (int): The thickness of the rectangle edges. Default is 2. - """ - # Create a rotated rectangle - rect = ((center[0], center[1]), (size[0], size[1]), angle) - - # Get the four vertices of the rotated rectangle - box = cv2.boxPoints(rect) - box = np.int0(box) # Convert to integer coordinates - - # Draw the rectangle on the frame - cv2.polylines(frame, [box], isClosed=True, color=color, thickness=thickness) - -with dai.Pipeline() as pipeline: - monoLeft = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_B) - monoRight = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_C) - align = pipeline.create(dai.node.ImageAlign) - - monoLeftOut = monoLeft.requestOutput((640, 480)) - monoRightOut = monoRight.requestOutput((640, 480)) - - monoLeftOut.link(align.input) - monoRightOut.link(align.inputAlignTo) - - rightOut = monoRightOut.createOutputQueue() - alignOut = align.outputAligned.createOutputQueue() - - pipeline.start() - while pipeline.isRunning(): - rightFrame = rightOut.get() - alignedFrame = alignOut.get() - - print(alignedFrame) - - assert rightFrame.validateTransformations() - assert alignedFrame.validateTransformations() - - right = rightFrame.getCvFrame() - depth = alignedFrame.getCvFrame() - - rect = dai.RotatedRect(dai.Point2f(200, 100), dai.Size2f(200, 100), 10) - remappedRect = rightFrame.getTransformation().remapRectTo(alignedFrame.getTransformation(), rect) - - draw_rotated_rectangle(right, (rect.center.x, rect.center.y), (rect.size.width, rect.size.height), rect.angle, (255, 0, 0)) - draw_rotated_rectangle(depth, (remappedRect.center.x, remappedRect.center.y), (remappedRect.size.width, remappedRect.size.height), remappedRect.angle, (255, 0, 0)) - - cv2.imshow("right", right) - cv2.imshow("aligned", depth) - - if cv2.waitKey(1) == ord('q'): - break - pipeline.stop() diff --git a/examples/python/ImageManip/image_manip_v2_remap.py b/examples/python/ImageManip/image_manip_v2_remap.py new file mode 100644 index 000000000..1da9e6322 --- /dev/null +++ b/examples/python/ImageManip/image_manip_v2_remap.py @@ -0,0 +1,69 @@ +import depthai as dai +import cv2 +import numpy as np + +def draw_rotated_rectangle(frame, center, size, angle, color, thickness=2): + """ + Draws a rotated rectangle on the given frame. + + Args: + frame (numpy.ndarray): The image/frame to draw on. + center (tuple): The (x, y) coordinates of the rectangle's center. + size (tuple): The (width, height) of the rectangle. + angle (float): The rotation angle of the rectangle in degrees (counter-clockwise). + color (tuple): The color of the rectangle in BGR format (e.g., (0, 255, 0) for green). + thickness (int): The thickness of the rectangle edges. Default is 2. + """ + # Create a rotated rectangle + rect = ((center[0], center[1]), (size[0], size[1]), angle) + + # Get the four vertices of the rotated rectangle + box = cv2.boxPoints(rect) + box = np.int0(box) # Convert to integer coordinates + + # Draw the rectangle on the frame + cv2.polylines(frame, [box], isClosed=True, color=color, thickness=thickness) + +with dai.Pipeline() as pipeline: + cam = pipeline.create(dai.node.Camera).build() + camOut = cam.requestOutput((640, 400), dai.ImgFrame.Type.BGR888i, fps = 30.0) + manip1 = pipeline.create(dai.node.ImageManipV2) + manip2 = pipeline.create(dai.node.ImageManipV2) + + camOut.link(manip1.inputImage) + manip1.out.link(manip2.inputImage) + + manip1.initialConfig.addRotateDeg(90) + manip1.initialConfig.setOutputSize(200, 320) + + manip2.initialConfig.addRotateDeg(90) + manip2.initialConfig.setOutputSize(320, 200) + + outQcam = camOut.createOutputQueue() + outQ1 = manip1.out.createOutputQueue() + outQ2 = manip2.out.createOutputQueue() + + pipeline.start() + + while True: + camFrame: dai.ImgFrame = outQcam.get() + manip1Frame: dai.ImgFrame = outQ1.get() + manip2Frame: dai.ImgFrame = outQ2.get() + + camCv = camFrame.getCvFrame() + manip1Cv = manip1Frame.getCvFrame() + manip2Cv = manip2Frame.getCvFrame() + + rect2 = dai.RotatedRect(dai.Rect(dai.Point2f(100, 100), dai.Point2f(200, 150)), 0) + rect1 = manip2Frame.getTransformation().remapRectTo(manip1Frame.getTransformation(), rect2) + rectcam = manip1Frame.getTransformation().remapRectTo(camFrame.getTransformation(), rect1) + + draw_rotated_rectangle(manip2Cv, (rect2.center.x, rect2.center.y), (rect2.size.width, rect2.size.height), rect2.angle, (255, 0, 0)) + draw_rotated_rectangle(manip1Cv, (rect1.center.x, rect1.center.y), (rect1.size.width, rect1.size.height), rect1.angle, (255, 0, 0)) + draw_rotated_rectangle(camCv, (rectcam.center.x, rectcam.center.y), (rectcam.size.width, rectcam.size.height), rectcam.angle, (255, 0, 0)) + + cv2.imshow("cam", camCv) + cv2.imshow("manip1", manip1Cv) + cv2.imshow("manip2", manip2Cv) + if cv2.waitKey(1) == ord('q'): + break From fe7061aea35a44500876569f84d9a94195631e65 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Thu, 9 Jan 2025 12:19:26 +0100 Subject: [PATCH 48/68] FW: PR fixes --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index a0f907a1b..feb377c05 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "9626f5a66abd91139233a6fef38a073bfe981120") +set(DEPTHAI_DEVICE_SIDE_COMMIT "0019499dc72f4583f525da41e7e81b9a0ef4a629") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 289b513a9caa5683822b133a41e6de935c1f3ddd Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Thu, 9 Jan 2025 15:11:00 +0100 Subject: [PATCH 49/68] Bump rvc4 fw --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 487ddb2ed..f0d70755c 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+38fbf795d3d5335f409db0247c9cfbada0e66c49") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+3ee5f7846e645a8b62d9fa17757550702b7628dd") From 8db82bbf4fd5f889af7767769d62517e3512f7b2 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Fri, 10 Jan 2025 11:50:21 +0100 Subject: [PATCH 50/68] FW: handle missing calib when setting initial transformation --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index feb377c05..0dd35157d 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "0019499dc72f4583f525da41e7e81b9a0ef4a629") +set(DEPTHAI_DEVICE_SIDE_COMMIT "9ee0a08d006cdab6191aa9f7e98b494880e24896") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 5cc19b1f8a429edf4c586da2547f9ea90ccb7843 Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Fri, 10 Jan 2025 12:21:06 +0100 Subject: [PATCH 51/68] Fix example --- examples/python/ImageManip/image_manip_v2_remap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/python/ImageManip/image_manip_v2_remap.py b/examples/python/ImageManip/image_manip_v2_remap.py index 1da9e6322..d0a48bf5d 100644 --- a/examples/python/ImageManip/image_manip_v2_remap.py +++ b/examples/python/ImageManip/image_manip_v2_remap.py @@ -19,7 +19,7 @@ def draw_rotated_rectangle(frame, center, size, angle, color, thickness=2): # Get the four vertices of the rotated rectangle box = cv2.boxPoints(rect) - box = np.int0(box) # Convert to integer coordinates + box = np.intp(box) # Convert to integer coordinates # Draw the rectangle on the frame cv2.polylines(frame, [box], isClosed=True, color=color, thickness=thickness) From 6fc514b1811964e8db26b3eff44108b1fbd6e82c Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Fri, 10 Jan 2025 13:56:39 +0100 Subject: [PATCH 52/68] FW: fix crash when using Cono/ColorCamera --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 0dd35157d..fed491ec8 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "9ee0a08d006cdab6191aa9f7e98b494880e24896") +set(DEPTHAI_DEVICE_SIDE_COMMIT "3c7d7c93a4c4c55d235ff7e406ed8824b9c18fef") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 074361b92936c5334809db4df08fb9718738b6b4 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 13 Jan 2025 00:29:25 +0200 Subject: [PATCH 53/68] ImageManipV2: Add undistort OP --- .../pipeline/datatype/ImageManipConfigV2.hpp | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp b/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp index 5f79a1a99..e89b653ce 100644 --- a/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp +++ b/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp @@ -191,8 +191,28 @@ struct Crop : OpBase { DEPTHAI_SERIALIZE(Crop, width, height, normalized, center); }; +struct Undistort : OpBase { + float enable; + + Undistort() {} + Undistort(float enable) : enable(enable) {} + + Undistort clone() const { + return *this; + } + + std::string toStr() const override { + std::stringstream ss; + ss.imbue(std::locale("")); + ss << "U:e=" << enable; + return ss.str(); + } + + DEPTHAI_SERIALIZE(Undistort, enable); +}; + struct ManipOp { - std::variant<Translate, Rotate, Resize, Flip, Affine, Perspective, FourPoints, Crop> op; + std::variant<Translate, Rotate, Resize, Flip, Affine, Perspective, FourPoints, Crop, Undistort> op; ManipOp() = default; ManipOp(Translate op) : op(op) {} // NOLINT @@ -203,6 +223,7 @@ struct ManipOp { ManipOp(Perspective op) : op(op) {} // NOLINT ManipOp(FourPoints op) : op(op) {} // NOLINT ManipOp(Crop op) : op(op) {} // NOLINT + ManipOp(Undistort op) : op(op) {} // NOLINT DEPTHAI_SERIALIZE(ManipOp, op); }; @@ -286,6 +307,11 @@ class ImageManipOpsBase : public ImageManipOpsEnums { return *this; } + ImageManipOpsBase& undistort(bool enable) { + operations.emplace_back(Undistort(enable)); + return *this; + } + ImageManipOpsBase& crop(float x, float y, float w, float h, bool normalized = false, bool center = false) { operations.emplace_back(Translate(-x, -y, normalized)); operations.emplace_back(Crop(w, h, normalized, center)); From 4bc07f9ae798cba17695a645ece25e0c3f43440c Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 13 Jan 2025 00:50:56 +0200 Subject: [PATCH 54/68] RVC2: Update FW --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 77bbf9672..c624432b7 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "052ee5648d9d5a49e6367c4a81d14a9b9ae8bfcf") +set(DEPTHAI_DEVICE_SIDE_COMMIT "9c041518bac1e2ac1935a526bd79bb0b7afb28ba") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 39bcc5031b3310ec82843edd8091f5c6be17e40b Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 13 Jan 2025 00:59:28 +0200 Subject: [PATCH 55/68] Move enable undistortion to std::optional --- bindings/python/src/pipeline/node/CameraBindings.cpp | 1 + include/depthai/capabilities/ImgFrameCapability.hpp | 2 +- include/depthai/pipeline/node/Camera.hpp | 3 ++- src/pipeline/node/Camera.cpp | 3 ++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bindings/python/src/pipeline/node/CameraBindings.cpp b/bindings/python/src/pipeline/node/CameraBindings.cpp index 08fada6b7..6ce05db8f 100644 --- a/bindings/python/src/pipeline/node/CameraBindings.cpp +++ b/bindings/python/src/pipeline/node/CameraBindings.cpp @@ -32,6 +32,7 @@ void bind_camera(pybind11::module& m, void* pCallstack) { "type"_a = std::nullopt, "resizeMode"_a = dai::ImgResizeMode::CROP, "fps"_a = 30, + "enableUndistortion"_a = std::nullopt, py::return_value_policy::reference_internal, DOC(dai, node, Camera, requestOutput)) .def("requestOutput", diff --git a/include/depthai/capabilities/ImgFrameCapability.hpp b/include/depthai/capabilities/ImgFrameCapability.hpp index 36122f9ac..9782496e4 100644 --- a/include/depthai/capabilities/ImgFrameCapability.hpp +++ b/include/depthai/capabilities/ImgFrameCapability.hpp @@ -46,7 +46,7 @@ class ImgFrameCapability : public CapabilityCRTP<Capability, ImgFrameCapability> CapabilityRange<float> fps; std::optional<ImgFrame::Type> type; ImgResizeMode resizeMode{ImgResizeMode::CROP}; - bool enableUndistortion = true; + std::optional<bool> enableUndistortion; // TODO(jakgra) add optional CapabilityRange fov / max-min horiz. / vertical crop; DEPTHAI_SERIALIZE(ImgFrameCapability, size, fps, type, resizeMode, enableUndistortion); diff --git a/include/depthai/pipeline/node/Camera.hpp b/include/depthai/pipeline/node/Camera.hpp index ba81774c0..ff697b6a5 100644 --- a/include/depthai/pipeline/node/Camera.hpp +++ b/include/depthai/pipeline/node/Camera.hpp @@ -23,7 +23,8 @@ class Camera : public DeviceNodeCRTP<DeviceNode, Camera, CameraProperties>, publ Node::Output* requestOutput(std::pair<uint32_t, uint32_t> size, std::optional<ImgFrame::Type> type = std::nullopt, ImgResizeMode resizeMode = ImgResizeMode::CROP, - float fps = 30); + float fps = 30, + std::optional<bool> enableUndistortion = std::nullopt); /** * Request output with advanced controls. Mainly to be used by custom node writers. */ diff --git a/src/pipeline/node/Camera.cpp b/src/pipeline/node/Camera.cpp index 6dfc30e9b..2e5db4cfc 100644 --- a/src/pipeline/node/Camera.cpp +++ b/src/pipeline/node/Camera.cpp @@ -148,12 +148,13 @@ Node::Output* Camera::requestFullResolutionOutput(ImgFrame::Type type, float fps return pimpl->requestOutput(*this, cap, false); } -Node::Output* Camera::requestOutput(std::pair<uint32_t, uint32_t> size, std::optional<ImgFrame::Type> type, ImgResizeMode resizeMode, float fps) { +Node::Output* Camera::requestOutput(std::pair<uint32_t, uint32_t> size, std::optional<ImgFrame::Type> type, ImgResizeMode resizeMode, float fps, std::optional<bool> enableUndistortion) { ImgFrameCapability cap; cap.size.fixed(size); cap.fps.fixed(fps); cap.type = type; cap.resizeMode = resizeMode; + cap.enableUndistortion = enableUndistortion; return pimpl->requestOutput(*this, cap, false); } From 5e46fdda586f2986b3073ce83751dc53c497d13b Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 13 Jan 2025 01:02:30 +0200 Subject: [PATCH 56/68] Update RVC2 FW --- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index c624432b7..9a7f4a6d7 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "9c041518bac1e2ac1935a526bd79bb0b7afb28ba") +set(DEPTHAI_DEVICE_SIDE_COMMIT "8eb8e1961097df2223fc280134fe6dbcad41b8b1") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 213b2b441d1b219facd6944dad7e3d05b25850da Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 13 Jan 2025 01:12:32 +0200 Subject: [PATCH 57/68] Update requestOutput bindings --- bindings/python/src/pipeline/node/CameraBindings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/python/src/pipeline/node/CameraBindings.cpp b/bindings/python/src/pipeline/node/CameraBindings.cpp index 6ce05db8f..d0d6554eb 100644 --- a/bindings/python/src/pipeline/node/CameraBindings.cpp +++ b/bindings/python/src/pipeline/node/CameraBindings.cpp @@ -27,7 +27,7 @@ void bind_camera(pybind11::module& m, void* pCallstack) { // .def("setCamera", &Camera::setCamera, "name"_a, DOC(dai, node, Camera, setCamera)) // .def("getCamera", &Camera::getCamera, DOC(dai, node, Camera, getCamera)) .def("requestOutput", - py::overload_cast<std::pair<uint32_t, uint32_t>, std::optional<ImgFrame::Type>, ImgResizeMode, float>(&Camera::requestOutput), + py::overload_cast<std::pair<uint32_t, uint32_t>, std::optional<ImgFrame::Type>, ImgResizeMode, float, std::optional<bool>>(&Camera::requestOutput), "size"_a, "type"_a = std::nullopt, "resizeMode"_a = dai::ImgResizeMode::CROP, From 06b368aafe67f0fd94d7dd6e79bce928a6342639 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 13 Jan 2025 01:13:59 +0200 Subject: [PATCH 58/68] Update RVC4 --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index db0536b8d..245952630 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+6fc71e8674fe7a520b93f4370cb157805f0bc0f2") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+20511ecf4c493889543f5ce0bba377314930ac8a") From d935383ea5416f6e174592796ede037f8b40283a Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 13 Jan 2025 01:38:46 +0200 Subject: [PATCH 59/68] RVC2: Add Camera undistortion example --- .../python/RVC2/Camera/camera_undistortion.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 examples/python/RVC2/Camera/camera_undistortion.py diff --git a/examples/python/RVC2/Camera/camera_undistortion.py b/examples/python/RVC2/Camera/camera_undistortion.py new file mode 100755 index 000000000..a58a48a4e --- /dev/null +++ b/examples/python/RVC2/Camera/camera_undistortion.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +import cv2 +import depthai as dai + +# Create pipeline +with dai.Pipeline() as pipeline: + # Define source and output + cam = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_B) + croppedQueue = cam.requestOutput((300,300), resizeMode=dai.ImgResizeMode.CROP, enableUndistortion=True).createOutputQueue() + stretchedQueue = cam.requestOutput((300,300), resizeMode=dai.ImgResizeMode.STRETCH, enableUndistortion=True).createOutputQueue() + letterBoxedQueue = cam.requestOutput((300,300), resizeMode=dai.ImgResizeMode.LETTERBOX, enableUndistortion=True).createOutputQueue() + + # Connect to device and start pipeline + pipeline.start() + while pipeline.isRunning(): + croppedIn = croppedQueue.get() + assert isinstance(croppedIn, dai.ImgFrame) + cv2.imshow("cropped undistorted", croppedIn.getCvFrame()) + + stretchedIn = stretchedQueue.get() + assert isinstance(stretchedIn, dai.ImgFrame) + cv2.imshow("stretched undistorted", stretchedIn.getCvFrame()) + + letterBoxedIn = letterBoxedQueue.get() + assert isinstance(letterBoxedIn, dai.ImgFrame) + cv2.imshow("letterboxed undistorted", letterBoxedIn.getCvFrame()) + + if cv2.waitKey(1) == ord("q"): + break From 5ab530eeb6d7751ea5c4cbdb9268596be91457db Mon Sep 17 00:00:00 2001 From: asahtik <asahtik@gmail.com> Date: Mon, 13 Jan 2025 10:28:28 +0100 Subject: [PATCH 60/68] Fix example crash on rvc4, bump rvc4 fw --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- examples/python/ImageManip/image_manip_v2_remap.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index f0d70755c..b21e7b3a5 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+3ee5f7846e645a8b62d9fa17757550702b7628dd") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+3cf298000129597b70c7f266bb70bc13647a356f") diff --git a/examples/python/ImageManip/image_manip_v2_remap.py b/examples/python/ImageManip/image_manip_v2_remap.py index d0a48bf5d..8cc543e2f 100644 --- a/examples/python/ImageManip/image_manip_v2_remap.py +++ b/examples/python/ImageManip/image_manip_v2_remap.py @@ -38,6 +38,7 @@ def draw_rotated_rectangle(frame, center, size, angle, color, thickness=2): manip2.initialConfig.addRotateDeg(90) manip2.initialConfig.setOutputSize(320, 200) + manip2.setRunOnHost(True) outQcam = camOut.createOutputQueue() outQ1 = manip1.out.createOutputQueue() From 877de5ebcb81174325bc6cd75cfc16877035c304 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Wed, 15 Jan 2025 18:54:08 +0200 Subject: [PATCH 61/68] Remove Undistort OP; add undistort flag --- .../pipeline/datatype/ImageManipConfigV2.hpp | 27 +++---------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp b/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp index e89b653ce..3367409c4 100644 --- a/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp +++ b/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp @@ -191,28 +191,8 @@ struct Crop : OpBase { DEPTHAI_SERIALIZE(Crop, width, height, normalized, center); }; -struct Undistort : OpBase { - float enable; - - Undistort() {} - Undistort(float enable) : enable(enable) {} - - Undistort clone() const { - return *this; - } - - std::string toStr() const override { - std::stringstream ss; - ss.imbue(std::locale("")); - ss << "U:e=" << enable; - return ss.str(); - } - - DEPTHAI_SERIALIZE(Undistort, enable); -}; - struct ManipOp { - std::variant<Translate, Rotate, Resize, Flip, Affine, Perspective, FourPoints, Crop, Undistort> op; + std::variant<Translate, Rotate, Resize, Flip, Affine, Perspective, FourPoints, Crop> op; ManipOp() = default; ManipOp(Translate op) : op(op) {} // NOLINT @@ -223,7 +203,6 @@ struct ManipOp { ManipOp(Perspective op) : op(op) {} // NOLINT ManipOp(FourPoints op) : op(op) {} // NOLINT ManipOp(Crop op) : op(op) {} // NOLINT - ManipOp(Undistort op) : op(op) {} // NOLINT DEPTHAI_SERIALIZE(ManipOp, op); }; @@ -246,6 +225,7 @@ class ImageManipOpsBase : public ImageManipOpsEnums { uint8_t backgroundG = 0; uint8_t backgroundB = 0; Colormap colormap = Colormap::NONE; + bool undistort = false; C operations{}; @@ -263,6 +243,7 @@ class ImageManipOpsBase : public ImageManipOpsEnums { to.backgroundG = backgroundG; to.backgroundB = backgroundB; to.colormap = colormap; + to.undistort = undistort; to.operations.clear(); to.operations.insert(to.operations.end(), operations.begin(), operations.end()); @@ -409,7 +390,7 @@ class ImageManipOpsBase : public ImageManipOpsEnums { } DEPTHAI_SERIALIZE( - ImageManipOpsBase, operations, outputWidth, outputHeight, center, resizeMode, background, backgroundR, backgroundG, backgroundB, colormap); + ImageManipOpsBase, operations, outputWidth, outputHeight, center, resizeMode, background, backgroundR, backgroundG, backgroundB, colormap, undistort); }; /** From 175bbc8537a1f91dee5ed7c9eeb7b32c6b6a30ff Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Wed, 15 Jan 2025 19:01:00 +0200 Subject: [PATCH 62/68] Remove ImageManip Undistort constructor --- include/depthai/pipeline/datatype/ImageManipConfigV2.hpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp b/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp index 3367409c4..c566802bc 100644 --- a/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp +++ b/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp @@ -288,11 +288,6 @@ class ImageManipOpsBase : public ImageManipOpsEnums { return *this; } - ImageManipOpsBase& undistort(bool enable) { - operations.emplace_back(Undistort(enable)); - return *this; - } - ImageManipOpsBase& crop(float x, float y, float w, float h, bool normalized = false, bool center = false) { operations.emplace_back(Translate(-x, -y, normalized)); operations.emplace_back(Crop(w, h, normalized, center)); From 8d603170158821903d92342230ca12120c4abfa1 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Wed, 15 Jan 2025 19:12:24 +0200 Subject: [PATCH 63/68] Update FW --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 245952630..50ddd606e 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+20511ecf4c493889543f5ce0bba377314930ac8a") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+84c5c0523a6da38977bed5703d52cf4f1474ff8b") diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 5af579c6a..c56fa16b3 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "e9617dd91000f84dc3a54e52d145bffccc749acf") +set(DEPTHAI_DEVICE_SIDE_COMMIT "108b7c0bd0a963401dedf929417eeee5acd4bdb2") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 3ed541201e9cfc4541366f3c8b59f941c187b86b Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Thu, 16 Jan 2025 15:17:15 +0200 Subject: [PATCH 64/68] Update FW --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 50ddd606e..070d0202f 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+84c5c0523a6da38977bed5703d52cf4f1474ff8b") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+fc00fb1af4e235905d013e328fae13c537530a99") diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index c56fa16b3..8b2e4ea9f 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "108b7c0bd0a963401dedf929417eeee5acd4bdb2") +set(DEPTHAI_DEVICE_SIDE_COMMIT "5d6cb937e3c4bd3a3e08abbe1e56d1ebd7912953") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From 48dc5ab044935ba508a6c90caf08517ca73bea06 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 20 Jan 2025 19:10:14 +0200 Subject: [PATCH 65/68] Add setter/getter for undistort --- .gitignore | 2 ++ .../datatype/ImageManipConfigV2Bindings.cpp | 2 ++ .../pipeline/datatype/ImageManipConfigV2.hpp | 20 +++++++++++++++++++ src/pipeline/datatype/ImageManipConfigV2.cpp | 9 +++++++++ 4 files changed, 33 insertions(+) diff --git a/.gitignore b/.gitignore index 78a777949..2cb33250f 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,5 @@ _builds/ *.swp /env + +.history/ \ No newline at end of file diff --git a/bindings/python/src/pipeline/datatype/ImageManipConfigV2Bindings.cpp b/bindings/python/src/pipeline/datatype/ImageManipConfigV2Bindings.cpp index 147f006cc..14eba852a 100644 --- a/bindings/python/src/pipeline/datatype/ImageManipConfigV2Bindings.cpp +++ b/bindings/python/src/pipeline/datatype/ImageManipConfigV2Bindings.cpp @@ -100,4 +100,6 @@ void bind_imagemanipconfigv2(pybind11::module& m, void* pCallstack) { static_cast<ImageManipConfigV2& (ImageManipConfigV2::*)(Colormap)>(&ImageManipConfigV2::setColormap), py::arg("colormap"), DOC(dai, ImageManipConfigV2, setColormap)); + .def("setUndistort", &ImageManipConfigV2::setUndistort, py::arg("undistort"), DOC(dai, ImageManipConfigV2, setUndistort)) + .def("getUndistort", &ImageManipConfigV2::getUndistort, DOC(dai, ImageManipConfigV2, getUndistort)); } diff --git a/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp b/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp index c566802bc..2a803ce06 100644 --- a/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp +++ b/include/depthai/pipeline/datatype/ImageManipConfigV2.hpp @@ -375,6 +375,15 @@ class ImageManipOpsBase : public ImageManipOpsEnums { return *this; } + ImageManipOpsBase& setUndistort(bool undistort) { + this->undistort = undistort; + return *this; + } + + bool getUndistort() const { + return undistort; + } + const C& getOperations() const { return this->operations; } @@ -520,6 +529,17 @@ class ImageManipConfigV2 : public Buffer { */ ImageManipConfigV2& setFrameType(ImgFrame::Type frameType); + /** + * Sets the undistort flag + */ + ImageManipConfigV2& setUndistort(bool undistort); + + /** + * Gets the undistort flag + * @returns True if undistort is enabled, false otherwise + */ + bool getUndistort() const; + /** * Instruct ImageManip to not remove current image from its queue and use the same for next message. * @param reuse True to enable reuse, false otherwise diff --git a/src/pipeline/datatype/ImageManipConfigV2.cpp b/src/pipeline/datatype/ImageManipConfigV2.cpp index 174c38414..54cd03f4d 100644 --- a/src/pipeline/datatype/ImageManipConfigV2.cpp +++ b/src/pipeline/datatype/ImageManipConfigV2.cpp @@ -86,6 +86,15 @@ ImageManipConfigV2& ImageManipConfigV2::setFrameType(ImgFrame::Type frameType) { return *this; } +ImageManipConfigV2& ImageManipConfigV2::setUndistort(bool undistort) { + base.setUndistort(undistort); + return *this; +} + +bool ImageManipConfigV2::getUndistort() const { + return base.getUndistort(); +} + ImageManipConfigV2& ImageManipConfigV2::setReusePreviousImage(bool reuse) { reusePreviousImage = reuse; return *this; From 4b7b911092989c7f2b78d2c0ed3f030371bdd111 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 20 Jan 2025 19:13:17 +0200 Subject: [PATCH 66/68] Update FW --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- cmake/Depthai/DepthaiDeviceSideConfig.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 070d0202f..2cd33e630 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+fc00fb1af4e235905d013e328fae13c537530a99") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+13f5b438c0f22b25db93103e8f43455c640c7f3d") diff --git a/cmake/Depthai/DepthaiDeviceSideConfig.cmake b/cmake/Depthai/DepthaiDeviceSideConfig.cmake index 8b2e4ea9f..4297c1b69 100644 --- a/cmake/Depthai/DepthaiDeviceSideConfig.cmake +++ b/cmake/Depthai/DepthaiDeviceSideConfig.cmake @@ -2,7 +2,7 @@ set(DEPTHAI_DEVICE_SIDE_MATURITY "snapshot") # "full commit hash of device side binary" -set(DEPTHAI_DEVICE_SIDE_COMMIT "5d6cb937e3c4bd3a3e08abbe1e56d1ebd7912953") +set(DEPTHAI_DEVICE_SIDE_COMMIT "976351fda3b70483e37882f989686bf0aa8c604d") # "version if applicable" set(DEPTHAI_DEVICE_SIDE_VERSION "") From ef386c0898b621693bf6fbbd265f6ee334adb02b Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 20 Jan 2025 19:22:45 +0200 Subject: [PATCH 67/68] Update bindings --- .../src/pipeline/datatype/ImageManipConfigV2Bindings.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bindings/python/src/pipeline/datatype/ImageManipConfigV2Bindings.cpp b/bindings/python/src/pipeline/datatype/ImageManipConfigV2Bindings.cpp index 14eba852a..36c29a82c 100644 --- a/bindings/python/src/pipeline/datatype/ImageManipConfigV2Bindings.cpp +++ b/bindings/python/src/pipeline/datatype/ImageManipConfigV2Bindings.cpp @@ -96,10 +96,10 @@ void bind_imagemanipconfigv2(pybind11::module& m, void* pCallstack) { .def("setReusePreviousImage", &ImageManipConfigV2::setReusePreviousImage, py::arg("reuse"), DOC(dai, ImageManipConfigV2, setReusePreviousImage)) .def("setSkipCurrentImage", &ImageManipConfigV2::setSkipCurrentImage, py::arg("skip"), DOC(dai, ImageManipConfigV2, setSkipCurrentImage)) .def("setFrameType", &ImageManipConfigV2::setFrameType, py::arg("type"), DOC(dai, ImageManipConfigV2, setFrameType)) + .def("setUndistort", &ImageManipConfigV2::setUndistort, py::arg("undistort"), DOC(dai, ImageManipConfigV2, setUndistort)) + .def("getUndistort", &ImageManipConfigV2::getUndistort, DOC(dai, ImageManipConfigV2, getUndistort)) .def("setColormap", static_cast<ImageManipConfigV2& (ImageManipConfigV2::*)(Colormap)>(&ImageManipConfigV2::setColormap), py::arg("colormap"), DOC(dai, ImageManipConfigV2, setColormap)); - .def("setUndistort", &ImageManipConfigV2::setUndistort, py::arg("undistort"), DOC(dai, ImageManipConfigV2, setUndistort)) - .def("getUndistort", &ImageManipConfigV2::getUndistort, DOC(dai, ImageManipConfigV2, getUndistort)); } From 72cc2a13061c1774cd97853472ccd2d592161223 Mon Sep 17 00:00:00 2001 From: SzabolcsGergely <szabi@luxonis.com> Date: Mon, 20 Jan 2025 19:26:48 +0200 Subject: [PATCH 68/68] Update RVC4 FW --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 2cd33e630..57dab5157 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -4,4 +4,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" # set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+93f7b75a885aa32f44c5e9f53b74470c49d2b1af") -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+13f5b438c0f22b25db93103e8f43455c640c7f3d") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+a0274cd7dafa3622160fe0c7d1fccfc1937ec268")