12 static constexpr
int fps = 30;
30 std::vector<std::string> queueNames;
41 rgbOut->setStreamName(
"rgb");
42 queueNames.push_back(
"rgb");
44 queueNames.push_back(
"depth");
57 camRgb->initialControl.setManualFocus(lensPosition);
59 }
catch(
const std::exception& ex) {
60 std::cout << ex.what() << std::endl;
73 stereo->setLeftRightCheck(
true);
77 camRgb->isp.link(rgbOut->input);
78 left->out.link(stereo->left);
80 stereo->disparity.link(depthOut->
input);
86 for(
const auto& name : queueNames) {
90 std::unordered_map<std::string, cv::Mat> frame;
92 auto rgbWindowName =
"rgb";
93 auto depthWindowName =
"depth";
94 auto blendedWindowName =
"rgb-depth";
95 cv::namedWindow(rgbWindowName);
96 cv::namedWindow(depthWindowName);
97 cv::namedWindow(blendedWindowName);
98 int defaultValue = (int)(
rgbWeight * 100);
99 cv::createTrackbar(
"RGB Weight %", blendedWindowName, &defaultValue, 100,
updateBlendWeights);
102 std::unordered_map<std::string, std::shared_ptr<dai::ImgFrame>> latestPacket;
105 for(
const auto& name : queueEvents) {
107 auto count = packets.size();
109 latestPacket[name] = packets[count - 1];
113 for(
const auto& name : queueNames) {
114 if(latestPacket.find(name) != latestPacket.end()) {
115 if(name == depthWindowName) {
116 frame[name] = latestPacket[name]->
getFrame();
117 auto maxDisparity = stereo->initialConfig.getMaxDisparity();
119 if(1) frame[name].convertTo(frame[name], CV_8UC1, 255. / maxDisparity);
121 if(1) cv::applyColorMap(frame[name], frame[name], cv::COLORMAP_HOT);
123 frame[name] = latestPacket[name]->getCvFrame();
126 cv::imshow(name, frame[name]);
131 if(frame.find(rgbWindowName) != frame.end() && frame.find(depthWindowName) != frame.end()) {
133 if(frame[depthWindowName].channels() < 3) {
134 cv::cvtColor(frame[depthWindowName], frame[depthWindowName], cv::COLOR_GRAY2BGR);
137 cv::addWeighted(frame[rgbWindowName],
rgbWeight, frame[depthWindowName],
depthWeight, 0, blended);
138 cv::imshow(blendedWindowName, blended);
142 int key = cv::waitKey(1);
143 if(key ==
'q' || key ==
'Q') {