init
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# Copyright (c) Orbbec Inc. All Rights Reserved.
|
||||
# Licensed under the MIT License.
|
||||
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
project(ob_infrared)
|
||||
|
||||
add_executable(${PROJECT_NAME} infrared.cpp)
|
||||
|
||||
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)
|
||||
target_link_libraries(${PROJECT_NAME} ob::OrbbecSDK ob::examples::utils)
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER "examples")
|
||||
if(MSVC)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
|
||||
endif()
|
||||
|
||||
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
# C++ Sample: 1.stream.infrared
|
||||
|
||||
## Overview
|
||||
|
||||
Use the SDK interface to obtain the camera IR stream and display it in the window
|
||||
|
||||
### Knowledge
|
||||
|
||||
Pipeline is a pipeline for processing data streams, providing multi-channel stream configuration, switching, frame aggregation, and frame synchronization functions.
|
||||
|
||||
## code overview
|
||||
|
||||
1. Configure IR sensor related information and enable the IR stream.You must configure this before calling pipe.start().
|
||||
|
||||
```cpp
|
||||
// Get the device from pipeline.
|
||||
std::shared_ptr<ob::Device> device = pipe.getDevice();
|
||||
|
||||
// Get the sensor list from device.
|
||||
std::shared_ptr<ob::SensorList> sensorList = device->getSensorList();
|
||||
|
||||
// Create a config for pipeline.
|
||||
std::shared_ptr<ob::Config> config = std::make_shared<ob::Config>();
|
||||
|
||||
for(uint32_t index = 0; index < sensorList->getCount(); index++) {
|
||||
// Query all supported infrared sensor type and enable the infrared stream.
|
||||
// For dual infrared device, enable the left and right infrared streams.
|
||||
// For single infrared device, enable the infrared stream.
|
||||
OBSensorType sensorType = sensorList->getSensorType(index);
|
||||
if(sensorType == OB_SENSOR_IR || sensorType == OB_SENSOR_IR_LEFT || sensorType == OB_SENSOR_IR_RIGHT) {
|
||||
// Enable the stream with specified profile;
|
||||
config->enableVideoStream(sensorType, OB_WIDTH_ANY, OB_HEIGHT_ANY, 30, OB_FORMAT_ANY);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
2. Open the window and output the IR stream
|
||||
|
||||
```cpp
|
||||
ob_smpl::CVWindow win("Infrared", 1280, 720, ob_smpl::ARRANGE_ONE_ROW);
|
||||
while(win.run()) {
|
||||
// Wait for up to 100ms for a frameset in blocking mode.
|
||||
auto frameSet = pipe.waitForFrameset(100);
|
||||
if(frameSet == nullptr) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Render a set of frame in the window.
|
||||
win.pushFramesToView(frameSet);
|
||||
}
|
||||
```
|
||||
|
||||
## Run Sample
|
||||
|
||||
Press the Esc key in the window to exit the program.
|
||||
|
||||
### Result
|
||||
|
||||

|
||||
@@ -0,0 +1,65 @@
|
||||
// Copyright (c) Orbbec Inc. All Rights Reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#include <libobsensor/ObSensor.hpp>
|
||||
|
||||
#include "utils.hpp"
|
||||
#include "utils_opencv.hpp"
|
||||
|
||||
std::map<OBSensorType, ob_stream_type> sensorStreamMap = {
|
||||
{OB_SENSOR_IR, OB_STREAM_IR},
|
||||
{OB_SENSOR_IR_LEFT, OB_STREAM_IR_LEFT},
|
||||
{OB_SENSOR_IR_RIGHT, OB_STREAM_IR_RIGHT}
|
||||
};
|
||||
|
||||
int main() try {
|
||||
// Create a pipeline with default device.
|
||||
ob::Pipeline pipe;
|
||||
|
||||
// Get the device from pipeline.
|
||||
std::shared_ptr<ob::Device> device = pipe.getDevice();
|
||||
|
||||
// Get the sensor list from device.
|
||||
std::shared_ptr<ob::SensorList> sensorList = device->getSensorList();
|
||||
|
||||
// Create a config for pipeline.
|
||||
std::shared_ptr<ob::Config> config = std::make_shared<ob::Config>();
|
||||
|
||||
for(uint32_t index = 0; index < sensorList->getCount(); index++) {
|
||||
// Query all supported infrared sensor type and enable the infrared stream.
|
||||
// For dual infrared device, enable the left and right infrared streams.
|
||||
// For single infrared device, enable the infrared stream.
|
||||
OBSensorType sensorType = sensorList->getSensorType(index);
|
||||
if(sensorType == OB_SENSOR_IR || sensorType == OB_SENSOR_IR_LEFT || sensorType == OB_SENSOR_IR_RIGHT) {
|
||||
// Enable the stream with specified profile;
|
||||
config->enableVideoStream(sensorType, OB_WIDTH_ANY, OB_HEIGHT_ANY, OB_FPS_ANY, OB_FORMAT_ANY);
|
||||
}
|
||||
}
|
||||
|
||||
pipe.start(config);
|
||||
|
||||
// Create a window for rendering and set the resolution of the window
|
||||
ob_smpl::CVWindow win("Infrared", 1280, 720, ob_smpl::ARRANGE_ONE_ROW);
|
||||
while(win.run()) {
|
||||
// Wait for up to 100ms for a frameset in blocking mode.
|
||||
auto frameSet = pipe.waitForFrameset(100);
|
||||
if(frameSet == nullptr) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Render a set of frame in the window.
|
||||
win.pushFramesToView(frameSet);
|
||||
}
|
||||
|
||||
// Stop the pipeline, no frame data will be generated
|
||||
pipe.stop();
|
||||
|
||||
return 0;
|
||||
}
|
||||
catch(ob::Error &e) {
|
||||
std::cerr << "function:" << e.getFunction() << "\nargs:" << e.getArgs() << "\nmessage:" << e.what() << "\ntype:" << e.getExceptionType() << std::endl;
|
||||
std::cout << "\nPress any key to exit.";
|
||||
ob_smpl::waitForKeyPressed();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user