12 static constexpr
int fps = 30;
25 *((
float*)weight) = float(percentRgb) / 100.f;
34 std::vector<std::string> queueNames;
46 rgbOut->setStreamName(
"rgb");
47 queueNames.push_back(
"rgb");
49 queueNames.push_back(
"depth");
51 queueNames.push_back(
"conf");
64 camRgb->initialControl.setManualFocus(lensPosition);
66 }
catch(
const std::exception& ex) {
67 std::cout << ex.what() << std::endl;
80 stereo->setLeftRightCheck(
true);
84 camRgb->isp.link(rgbOut->input);
85 left->out.link(stereo->left);
87 stereo->disparity.link(depthOut->
input);
88 stereo->confidenceMap.link(confOut->
input);
94 for(
const auto& name : queueNames) {
98 std::unordered_map<std::string, cv::Mat> frame;
100 auto rgbWindowName =
"rgb";
101 auto depthWindowName =
"depth";
102 auto confWindowName =
"conf";
103 auto blendedWindowName =
"rgb-depth-confidence";
104 cv::namedWindow(rgbWindowName);
105 cv::namedWindow(depthWindowName);
106 cv::namedWindow(confWindowName);
107 cv::namedWindow(blendedWindowName);
108 int defRgbWeightValue = (int)(
rgbWeight * 100);
109 int defDepthWeightValue = (int)(
rgbWeight * 100);
110 int defConfWeightValue = (int)(
rgbWeight * 100);
116 std::unordered_map<std::string, std::shared_ptr<dai::ImgFrame>> latestPacket;
119 for(
const auto& name : queueEvents) {
121 auto count = packets.size();
123 latestPacket[name] = packets[count - 1];
127 for(
const auto& name : queueNames) {
128 if(latestPacket.find(name) != latestPacket.end()) {
129 if(name == depthWindowName) {
130 frame[name] = latestPacket[name]->
getFrame();
131 auto maxDisparity = stereo->initialConfig.getMaxDisparity();
133 if(1) frame[name].convertTo(frame[name], CV_8UC1, 255. / maxDisparity);
135 if(1) cv::applyColorMap(frame[name], frame[name], cv::COLORMAP_HOT);
137 frame[name] = latestPacket[name]->getCvFrame();
140 cv::imshow(name, frame[name]);
145 if(frame.find(rgbWindowName) != frame.end() && frame.find(depthWindowName) != frame.end() && frame.find(confWindowName) != frame.end()) {
147 if(frame[depthWindowName].channels() < 3) {
148 cv::cvtColor(frame[depthWindowName], frame[depthWindowName], cv::COLOR_GRAY2BGR);
150 if(frame[confWindowName].channels() < 3) {
151 cv::cvtColor(frame[confWindowName], frame[confWindowName], cv::COLOR_GRAY2BGR);
156 if(sumWeight <= 1.0) {
166 cv::Mat blended1, blended2;
169 cv::imshow(blendedWindowName, blended2);
173 int key = cv::waitKey(1);
174 if(key ==
'q' || key ==
'Q') {