rgb_full_resolution_saver.cpp
Go to the documentation of this file.
1 #include <chrono>
2 #include <iostream>
3 
4 // Includes common necessary includes for development using depthai library
5 #include "depthai/depthai.hpp"
6 #include "utility.hpp"
7 
8 int main() {
9  using namespace std::chrono;
10 
11  // Create pipeline
12  dai::Pipeline pipeline;
13 
14  // Define source and outputs
15  auto camRgb = pipeline.create<dai::node::ColorCamera>();
16  auto videoEnc = pipeline.create<dai::node::VideoEncoder>();
17  auto xoutJpeg = pipeline.create<dai::node::XLinkOut>();
18  auto xoutRgb = pipeline.create<dai::node::XLinkOut>();
19 
20  xoutJpeg->setStreamName("jpeg");
21  xoutRgb->setStreamName("rgb");
22 
23  // Properties
24  camRgb->setBoardSocket(dai::CameraBoardSocket::CAM_A);
26  videoEnc->setDefaultProfilePreset(camRgb->getFps(), dai::VideoEncoderProperties::Profile::MJPEG);
27 
28  // Linking
29  camRgb->video.link(xoutRgb->input);
30  camRgb->video.link(videoEnc->input);
31  videoEnc->bitstream.link(xoutJpeg->input);
32 
33  // Connect to device and start pipeline
34  dai::Device device(pipeline);
35 
36  // Queues
37  auto qRgb = device.getOutputQueue("rgb", 30, false);
38  auto qJpeg = device.getOutputQueue("jpeg", 30, true);
39 
40  std::string dirName = "rgb_data";
41  createDirectory(dirName);
42 
43  while(true) {
44  auto inRgb = qRgb->tryGet<dai::ImgFrame>();
45  if(inRgb != NULL) {
46  cv::imshow("rgb", inRgb->getCvFrame());
47  }
48 
49  auto encFrames = qJpeg->tryGetAll<dai::ImgFrame>();
50  for(const auto& encFrame : encFrames) {
51  uint64_t time = duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count();
52  std::stringstream videoStr;
53  videoStr << dirName << "/" << time << ".jpeg";
54  auto videoFile = std::ofstream(videoStr.str(), std::ios::binary);
55  videoFile.write((char*)encFrame->getData().data(), encFrame->getData().size());
56  }
57 
58  int key = cv::waitKey(1);
59  if(key == 'q' || key == 'Q') {
60  return 0;
61  }
62  }
63  return 0;
64 }
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::CameraBoardSocket::CAM_A
@ CAM_A
dai::node::ColorCamera
ColorCamera node. For use with color sensors.
Definition: ColorCamera.hpp:16
dai::ColorCameraProperties::SensorResolution::THE_4_K
@ THE_4_K
3840 × 2160
dai::VideoEncoderProperties::Profile::MJPEG
@ MJPEG
dai::Device::getOutputQueue
std::shared_ptr< DataOutputQueue > getOutputQueue(const std::string &name)
Definition: Device.cpp:86
dai::node::XLinkOut::input
Input input
Definition: XLinkOut.hpp:27
depthai.hpp
dai::Pipeline::create
std::shared_ptr< N > create()
Definition: Pipeline.hpp:145
dai::ImgFrame
Definition: ImgFrame.hpp:25
dai::node::ColorCamera::video
Output video
Definition: ColorCamera.hpp:62
dai::Device
Definition: Device.hpp:21
createDirectory
int createDirectory(std::string directory)
Definition: utility.cpp:15
main
int main()
Definition: rgb_full_resolution_saver.cpp:8
dai::node::VideoEncoder
VideoEncoder node. Encodes frames into MJPEG, H264 or H265.
Definition: VideoEncoder.hpp:14
dai::Node::Output::link
void link(const Input &in)
Definition: Node.cpp:84
dai::node::XLinkOut::setStreamName
void setStreamName(const std::string &name)
Definition: XLinkOut.cpp:13
dai::node::VideoEncoder::input
Input input
Definition: VideoEncoder.hpp:25
utility.hpp


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