2 #include <opencv2/opencv.hpp>
7 constexpr
auto FPS = 30.0;
19 auto now = std::chrono::steady_clock::now();
28 auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(
frameTimes.back() -
frameTimes.front()).count();
29 return (
frameTimes.size() - 1) * 1000.0 / duration;
33 std::queue<std::chrono::steady_clock::time_point>
frameTimes;
41 rgbWeight =
static_cast<double>(percentRgb) / 100.0;
66 camRgb->setIspScale(1, 3);
68 out->setStreamName(
"out");
70 sync->setSyncThreshold(std::chrono::milliseconds(
static_cast<int>((1 /
FPS) * 1000.0 * 0.5)));
72 cfgIn->setStreamName(
"config");
74 align->outputAligned.link(sync->inputs[
"aligned"]);
75 camRgb->isp.link(sync->inputs[
"rgb"]);
76 camRgb->isp.link(align->inputAlignTo);
77 left->out.link(align->
input);
79 cfgIn->out.link(align->inputConfig);
87 std::string windowName =
"rgb-left";
88 cv::namedWindow(windowName, cv::WINDOW_NORMAL);
89 cv::resizeWindow(windowName, 1280, 720);
91 cv::createTrackbar(
"Static Depth Plane [mm]", windowName,
nullptr, 2000,
updateDepthPlane);
98 auto leftAligned = messageGroup->get<
dai::ImgFrame>(
"aligned");
100 if(frameRgb && leftAligned) {
104 if(leftCv.channels() == 1) {
105 cv::cvtColor(leftCv, leftCv, cv::COLOR_GRAY2BGR);
107 if(leftCv.size() != frameRgbCv.size()) {
108 cv::resize(leftCv, leftCv, frameRgbCv.size());
113 cv::imshow(windowName, blended);
116 int key = cv::waitKey(1);
117 if(key ==
'q' || key ==
'Q') {
121 auto cfg = align->initialConfig.get();
123 auto alignConfig = std::make_shared<dai::ImageAlignConfig>();
124 alignConfig->set(cfg);
125 cfgQ->send(alignConfig);