#include #include constexpr int SHAPE = 300; int main() { dai::Pipeline p; auto camRgb = p.create(); auto left = p.create(); auto right = p.create(); auto manipLeft = p.create(); auto manipRight = p.create(); auto nn = p.create(); auto cast = p.create(); auto castXout = p.create(); camRgb->setPreviewSize(SHAPE, SHAPE); camRgb->setInterleaved(false); camRgb->setColorOrder(dai::ColorCameraProperties::ColorOrder::BGR); left->setCamera("left"); left->setResolution(dai::MonoCameraProperties::SensorResolution::THE_400_P); manipLeft->initialConfig.setResize(SHAPE, SHAPE); manipLeft->initialConfig.setFrameType(dai::ImgFrame::Type::BGR888p); right->setCamera("right"); right->setResolution(dai::MonoCameraProperties::SensorResolution::THE_400_P); manipRight->initialConfig.setResize(SHAPE, SHAPE); manipRight->initialConfig.setFrameType(dai::ImgFrame::Type::BGR888p); nn->setBlobPath(BLOB_PATH); nn->setNumInferenceThreads(2); castXout->setStreamName("cast"); cast->setOutputFrameType(dai::ImgFrame::Type::BGR888p); // Linking left->out.link(manipLeft->inputImage); right->out.link(manipRight->inputImage); manipLeft->out.link(nn->inputs["img1"]); camRgb->preview.link(nn->inputs["img2"]); manipRight->out.link(nn->inputs["img3"]); nn->out.link(cast->input); cast->output.link(castXout->input); // Pipeline is defined, now we can connect to the device dai::Device device(p); auto qCast = device.getOutputQueue("cast", 4, false); while(true) { auto inCast = qCast->get(); if(inCast) { cv::imshow("Concated frames", inCast->getCvFrame()); } if(cv::waitKey(1) == 'q') { break; } } return 0; }