concat_multi_input.cpp
Go to the documentation of this file.
1 #include <chrono>
2 #include <cstdio>
3 #include <iostream>
4 
5 // Inludes common necessary includes for development using depthai library
6 #include "depthai/depthai.hpp"
7 #include "utility.hpp"
8 
9 int main(int argc, char** argv) {
10  using namespace std;
11  // Default blob path provided by Hunter private data download
12  // Applicable for easier example usage only
13  std::string nnPath(BLOB_PATH);
14 
15  // If path to blob specified, use that
16  if(argc > 1) {
17  nnPath = std::string(argv[1]);
18  }
19 
20  // Print which blob we are using
21  printf("Using blob at path: %s\n", nnPath.c_str());
22 
23  // Create pipeline
24  dai::Pipeline pipeline;
25  pipeline.setOpenVINOVersion(dai::OpenVINO::Version::VERSION_2021_4);
26 
27  // Define sources and outputs
28  auto camRgb = pipeline.create<dai::node::ColorCamera>();
29  camRgb->setPreviewSize(300, 300); // NN input
30  camRgb->setInterleaved(false);
31  camRgb->setColorOrder(dai::ColorCameraProperties::ColorOrder::BGR);
32 
33  auto right = pipeline.create<dai::node::MonoCamera>();
34  right->setCamera("right");
36 
37  auto manipRight = pipeline.create<dai::node::ImageManip>();
38  manipRight->initialConfig.setResize(300, 300);
39  manipRight->initialConfig.setFrameType(dai::ImgFrame::Type::BGR888p);
40  right->out.link(manipRight->inputImage);
41 
42  auto left = pipeline.create<dai::node::MonoCamera>();
43  left->setCamera("left");
45 
46  auto manipLeft = pipeline.create<dai::node::ImageManip>();
47  manipLeft->initialConfig.setResize(300, 300);
48  manipLeft->initialConfig.setFrameType(dai::ImgFrame::Type::BGR888p);
49  left->out.link(manipLeft->inputImage);
50 
51  auto nn = pipeline.create<dai::node::NeuralNetwork>();
52  nn->setBlobPath(nnPath);
53  nn->setNumInferenceThreads(2);
54 
55  manipLeft->out.link(nn->inputs["img1"]);
56  camRgb->preview.link(nn->inputs["img2"]);
57  manipRight->out.link(nn->inputs["img3"]);
58 
59  auto xout = pipeline.create<dai::node::XLinkOut>();
60  xout->setStreamName("nn");
61  nn->out.link(xout->input);
62 
63  // Connect to device and start pipeline
64  dai::Device device(pipeline);
65 
66  // Output queues will be used to get the rgb frames and nn data from the outputs defined above
67  auto qNn = device.getOutputQueue("nn", 4, false);
68 
69  while(true) {
70  auto inNn = qNn->get<dai::NNData>();
71  cv::imshow("Concat", fromPlanarFp16(inNn->getFirstLayerFp16(), 900, 300));
72 
73  int key = cv::waitKey(1);
74  if(key == 'q' || key == 'Q') {
75  return 0;
76  }
77  }
78  return 0;
79 }
dai::node::XLinkOut
XLinkOut node. Sends messages over XLink.
Definition: XLinkOut.hpp:14
dai::node::MonoCamera::setCamera
void setCamera(std::string name)
Definition: MonoCamera.cpp:36
dai::Pipeline
Represents the pipeline, set of nodes and connections between them.
Definition: Pipeline.hpp:100
dai::NNData
Definition: NNData.hpp:16
dai::node::MonoCamera
MonoCamera node. For use with grayscale sensors.
Definition: MonoCamera.hpp:17
dai::node::ColorCamera
ColorCamera node. For use with color sensors.
Definition: ColorCamera.hpp:16
dai::node::NeuralNetwork
NeuralNetwork node. Runs a neural inference on input data.
Definition: NeuralNetwork.hpp:18
dai::RawImgFrame::Type::BGR888p
@ BGR888p
dai::Device::getOutputQueue
std::shared_ptr< DataOutputQueue > getOutputQueue(const std::string &name)
Definition: Device.cpp:86
dai::MonoCameraProperties::SensorResolution::THE_400_P
@ THE_400_P
dai::ImageManipConfig::setResize
ImageManipConfig & setResize(int w, int h)
Definition: ImageManipConfig.cpp:114
dai::Pipeline::setOpenVINOVersion
void setOpenVINOVersion(OpenVINO::Version version)
Set a specific OpenVINO version to use with this pipeline.
Definition: Pipeline.hpp:224
depthai.hpp
dai::ImageManipConfig::setFrameType
ImageManipConfig & setFrameType(ImgFrame::Type name)
Definition: ImageManipConfig.cpp:155
dai::Pipeline::create
std::shared_ptr< N > create()
Definition: Pipeline.hpp:145
dai::node::NeuralNetwork::setBlobPath
void setBlobPath(const dai::Path &path)
Definition: NeuralNetwork.cpp:26
dai::ColorCameraProperties::ColorOrder::BGR
@ BGR
dai::node::ImageManip
ImageManip node. Capability to crop, resize, warp, ... incoming image frames.
Definition: ImageManip.hpp:15
dai::Device
Definition: Device.hpp:21
fromPlanarFp16
cv::Mat fromPlanarFp16(const std::vector< float > &data, int w, int h, float mean, float scale)
Definition: utility.cpp:27
std
Definition: Node.hpp:366
dai::node::ColorCamera::setPreviewSize
void setPreviewSize(int width, int height)
Set preview output size.
Definition: ColorCamera.cpp:121
dai::node::ImageManip::initialConfig
ImageManipConfig initialConfig
Definition: ImageManip.hpp:34
dai::node::XLinkOut::setStreamName
void setStreamName(const std::string &name)
Definition: XLinkOut.cpp:13
main
int main(int argc, char **argv)
Definition: concat_multi_input.cpp:9
utility.hpp


depthai
Author(s): Martin Peterlin
autogenerated on Sat Mar 22 2025 02:58:19