image_manip_rotate.cpp
Go to the documentation of this file.
1 #include <iostream>
2 
3 // Includes common necessary includes for development using depthai library
4 #include "depthai/depthai.hpp"
5 
6 int main() {
7  using namespace std;
8 
9  // Create pipeline
10  dai::Pipeline pipeline;
11 
12  // Rotate color frames
13  auto camRgb = pipeline.create<dai::node::ColorCamera>();
14  camRgb->setPreviewSize(640, 400);
16  camRgb->setInterleaved(false);
17 
18  auto manipRgb = pipeline.create<dai::node::ImageManip>();
19  dai::RotatedRect rgbRr = {{camRgb->getPreviewWidth() / 2.0f, camRgb->getPreviewHeight() / 2.0f}, // center
20  {camRgb->getPreviewHeight() * 1.0f, camRgb->getPreviewWidth() * 1.0f}, // size
21  90}; // angle
22  manipRgb->initialConfig.setCropRotatedRect(rgbRr, false);
23  camRgb->preview.link(manipRgb->inputImage);
24 
25  auto manipRgbOut = pipeline.create<dai::node::XLinkOut>();
26  manipRgbOut->setStreamName("manip_rgb");
27  manipRgb->out.link(manipRgbOut->input);
28 
29  // Rotate mono frames
30  auto monoLeft = pipeline.create<dai::node::MonoCamera>();
32  monoLeft->setCamera("left");
33 
34  auto manipLeft = pipeline.create<dai::node::ImageManip>();
35  dai::RotatedRect rr = {{monoLeft->getResolutionWidth() / 2.0f, monoLeft->getResolutionHeight() / 2.0f}, // center
36  {monoLeft->getResolutionHeight() * 1.0f, monoLeft->getResolutionWidth() * 1.0f}, // size
37  90}; // angle
38  manipLeft->initialConfig.setCropRotatedRect(rr, false);
39  monoLeft->out.link(manipLeft->inputImage);
40 
41  auto manipLeftOut = pipeline.create<dai::node::XLinkOut>();
42  manipLeftOut->setStreamName("manip_left");
43  manipLeft->out.link(manipLeftOut->input);
44 
45  dai::Device device(pipeline);
46 
47  auto qLeft = device.getOutputQueue("manip_left", 8, false);
48  auto qRgb = device.getOutputQueue("manip_rgb", 8, false);
49 
50  while(true) {
51  auto inLeft = qLeft->tryGet<dai::ImgFrame>();
52  if(inLeft) {
53  cv::imshow("Left rotated", inLeft->getCvFrame());
54  }
55 
56  auto inRgb = qRgb->tryGet<dai::ImgFrame>();
57  if(inRgb) {
58  cv::imshow("Color rotated", inRgb->getCvFrame());
59  }
60 
61  int key = cv::waitKey(1);
62  if(key == 'q' || key == 'Q') return 0;
63  }
64  return 0;
65 }
dai::node::XLinkOut
XLinkOut node. Sends messages over XLink.
Definition: XLinkOut.hpp:14
dai::Pipeline
Represents the pipeline, set of nodes and connections between them.
Definition: Pipeline.hpp:100
dai::RotatedRect
RotatedRect structure.
Definition: RotatedRect.hpp:14
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
main
int main()
Definition: image_manip_rotate.cpp:6
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
depthai.hpp
dai::Pipeline::create
std::shared_ptr< N > create()
Definition: Pipeline.hpp:145
dai::node::MonoCamera::setResolution
void setResolution(Properties::SensorResolution resolution)
Set sensor resolution.
Definition: MonoCamera.cpp:82
dai::ImgFrame
Definition: ImgFrame.hpp:25
dai::node::ImageManip
ImageManip node. Capability to crop, resize, warp, ... incoming image frames.
Definition: ImageManip.hpp:15
dai::ColorCameraProperties::SensorResolution::THE_1080_P
@ THE_1080_P
1920 × 1080
dai::Device
Definition: Device.hpp:21
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::XLinkOut::setStreamName
void setStreamName(const std::string &name)
Definition: XLinkOut.cpp:13


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