7 static const std::vector<std::string>
labelMap = {
"background",
"aeroplane",
"bicycle",
"bird",
"boat",
"bottle",
"bus",
8 "car",
"cat",
"chair",
"cow",
"diningtable",
"dog",
"horse",
9 "motorbike",
"person",
"pottedplant",
"sheep",
"sofa",
"train",
"tvmonitor"};
11 int main(
int argc,
char** argv) {
15 std::string nnPath(BLOB_PATH);
19 nnPath = std::string(argv[1]);
23 printf(
"Using blob at path: %s\n", nnPath.c_str());
39 disparityOut->setStreamName(
"disparity");
44 monoRight->setCamera(
"right");
50 stereo->setRectifyEdgeFillColor(0);
57 nn->setConfidenceThreshold(0.5);
58 nn->setBlobPath(nnPath);
59 nn->setNumInferenceThreads(2);
60 nn->input.setBlocking(
false);
63 monoRight->
out.
link(stereo->right);
64 monoLeft->
out.
link(stereo->left);
65 stereo->rectifiedRight.link(manip->inputImage);
66 stereo->disparity.link(disparityOut->input);
67 manip->out.link(nn->input);
68 manip->out.link(xoutRight->
input);
80 cv::Mat disparityFrame;
81 std::vector<dai::ImgDetection> detections;
84 auto show = [](std::string name, cv::Mat frame, std::vector<dai::ImgDetection>& detections) {
85 auto color = cv::Scalar(255, 192, 203);
87 for(
auto& detection : detections) {
88 int x1 = detection.xmin * frame.cols;
89 int y1 = detection.ymin * frame.rows;
90 int x2 = detection.xmax * frame.cols;
91 int y2 = detection.ymax * frame.rows;
93 uint32_t labelIndex = detection.label;
94 std::string labelStr =
to_string(labelIndex);
98 cv::putText(frame, labelStr, cv::Point(x1 + 10, y1 + 20), cv::FONT_HERSHEY_TRIPLEX, 0.5, color);
99 std::stringstream confStr;
100 confStr << std::fixed << std::setprecision(2) << detection.confidence * 100;
101 cv::putText(frame, confStr.str(), cv::Point(x1 + 10, y1 + 40), cv::FONT_HERSHEY_TRIPLEX, 0.5, color);
102 cv::rectangle(frame, cv::Rect(cv::Point(x1, y1), cv::Point(x2, y2)), color, cv::FONT_HERSHEY_SIMPLEX);
105 cv::imshow(name, frame);
108 float disparityMultiplier = 255 / stereo->initialConfig.getMaxDisparity();
118 disparityFrame = inDisparity->getFrame();
119 disparityFrame.convertTo(disparityFrame, CV_8UC1, disparityMultiplier);
121 cv::applyColorMap(disparityFrame, disparityFrame, cv::COLORMAP_JET);
122 show(
"disparity", disparityFrame, detections);
125 if(!rightFrame.empty()) {
126 show(
"rectified right", rightFrame, detections);
129 int key = cv::waitKey(1);
130 if(key ==
'q' || key ==
'Q')
return 0;