mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-04 12:07:46 +08:00
fixed filter mem leak
This commit is contained in:
@@ -565,5 +565,6 @@ class OBCameraNode {
|
||||
bool enable_heartbeat_ = false;
|
||||
bool enable_color_undistortion_ = false;
|
||||
image_transport::Publisher color_undistortion_publisher_;
|
||||
std::vector<std::shared_ptr<ob::Filter>> filter_list_;
|
||||
};
|
||||
} // namespace orbbec_camera
|
||||
|
||||
@@ -425,13 +425,13 @@ void OBCameraNode::setupDevices() {
|
||||
void OBCameraNode::setupDepthPostProcessFilter() {
|
||||
auto depth_sensor = device_->getSensor(OB_SENSOR_DEPTH);
|
||||
// set depth sensor to filter
|
||||
auto filter_list = depth_sensor->getRecommendedFilters();
|
||||
if (!filter_list.empty()) {
|
||||
filter_list_ = depth_sensor->getRecommendedFilters();
|
||||
if (!filter_list_.empty()) {
|
||||
RCLCPP_ERROR(logger_, "Failed to get depth sensor filter list");
|
||||
return;
|
||||
}
|
||||
for (size_t i = 0; i < filter_list.size(); i++) {
|
||||
auto filter = filter_list[i];
|
||||
for (size_t i = 0; i < filter_list_.size(); i++) {
|
||||
auto filter = filter_list_[i];
|
||||
std::map<std::string, bool> filter_params = {
|
||||
{"DecimationFilter", enable_decimation_filter_},
|
||||
{"HDRMerge", enable_hdr_merge_},
|
||||
@@ -1513,11 +1513,8 @@ std::shared_ptr<ob::Frame> OBCameraNode::processDepthFrameFilter(
|
||||
if (frame == nullptr || frame->getType() != OB_FRAME_DEPTH) {
|
||||
return nullptr;
|
||||
}
|
||||
auto sensor = device_->getSensor(OB_SENSOR_DEPTH);
|
||||
CHECK_NOTNULL(sensor.get());
|
||||
auto filter_list = sensor->getRecommendedFilters();
|
||||
for (size_t i = 0; i < filter_list.size(); i++) {
|
||||
auto filter = filter_list[i];
|
||||
for (size_t i = 0; i < filter_list_.size(); i++) {
|
||||
auto filter = filter_list_[i];
|
||||
CHECK_NOTNULL(filter.get());
|
||||
if (filter->isEnabled() && frame != nullptr) {
|
||||
frame = filter->process(frame);
|
||||
@@ -2486,4 +2483,4 @@ orbbec_camera_msgs::msg::IMUInfo OBCameraNode::createIMUInfo(
|
||||
return imu_info;
|
||||
}
|
||||
|
||||
} // namespace orbbec_camera
|
||||
} // namespace orbbec_camera
|
||||
|
||||
Reference in New Issue
Block a user