Shane Loretz 9740b6209f
Initial package (#1)
* Initial package

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Use latest vision_msgs with string id

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Tiny improvements

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Add parser tests and ignore blank lines in class names

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Test when cfg file does not exist

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Rename test

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* openrobotics_darknet_ros -> openrobotics::darknet_ros

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Added visibility files

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Rename files

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* darknet_node -> detector_node

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Rename files

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Rename files

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* DetectorNetwork and DetectorNode

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Simple readme

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Add Example section

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Example actually works

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Fix link

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>

* Linter tests pass

Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
2019-10-04 14:59:05 -07:00

72 lines
2.4 KiB
C++

// Copyright 2019 Open Source Robotics Foundation, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef OPENROBOTICS_DARKNET_ROS__DETECTOR_NETWORK_HPP_
#define OPENROBOTICS_DARKNET_ROS__DETECTOR_NETWORK_HPP_
#include <memory>
#include <string>
#include <vector>
#include "openrobotics_darknet_ros/visibility.hpp"
#include "sensor_msgs/msg/image.hpp"
#include "vision_msgs/msg/detection2_d_array.hpp"
namespace openrobotics
{
namespace darknet_ros
{
// Forward declaration
class DetectorNetworkPrivate;
class DetectorNetwork
{
public:
/// \brief load a network from disk
/// \param[in] config_file Path to a file describing the network
/// \param[in] weights_file Path to a file containing the network's weights
/// \param[in] classes Ordered list of class names the network can predict
DARKNET_ROS_PUBLIC
DetectorNetwork(
const std::string & config_file,
const std::string & weights_file,
const std::vector<std::string> & classes);
DARKNET_ROS_PUBLIC
~DetectorNetwork();
/// \brief Detect objects in image
/// \param[in] image An image to analyze
/// \param[in] threshold How confident the network must be to detect something [0.0, 1.0]
/// \param[in] nms_threshold Non-Maximal Suppression threhsold [0.0, 1.0].
/// When the intersection over union (iou) of two bounding boxes is greater than nms_threshold,
/// the box with the lower objectness score is discarded.
/// \param[out] output_detections Things detected in the image (does not set source_img)
/// \return number of objects detected
DARKNET_ROS_PUBLIC
size_t
detect(
const sensor_msgs::msg::Image & image,
double threshold,
double nms_threshold,
vision_msgs::msg::Detection2DArray * output_detections);
private:
std::unique_ptr<DetectorNetworkPrivate> impl_;
};
} // namespace darknet_ros
} // namespace openrobotics
#endif // OPENROBOTICS_DARKNET_ROS__DETECTOR_NETWORK_HPP_