src
invert_mask_image.cpp
Go to the documentation of this file.
1
// -*- mode: c++ -*-
2
/*********************************************************************
3
* Software License Agreement (BSD License)
4
*
5
* Copyright (c) 2022, JSK Lab
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
*
12
* * Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
* * Redistributions in binary form must reproduce the above
15
* copyright notice, this list of conditions and the following
16
* disclaimer in the documentation and/or other materials provided
17
* with the distribution.
18
* * Neither the name of the JSK Lab nor the names of its
19
* contributors may be used to endorse or promote products derived
20
* from this software without specific prior written permission.
21
*
22
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
* POSSIBILITY OF SUCH DAMAGE.
34
*********************************************************************/
35
36
#include "
jsk_perception/invert_mask_image.h
"
37
#include <boost/assign.hpp>
38
#include <jsk_topic_tools/log_utils.h>
39
#include <opencv2/opencv.hpp>
40
#include <
cv_bridge/cv_bridge.h
>
41
42
43
namespace
jsk_perception
44
{
45
void
InvertMaskImage::onInit
()
46
{
47
DiagnosticNodelet::onInit();
48
pub_mask_
= advertise<sensor_msgs::Image>(*pnh_,
"output"
, 1);
49
onInitPostProcess();
50
}
51
52
InvertMaskImage::~InvertMaskImage
() {
53
}
54
55
void
InvertMaskImage::subscribe
()
56
{
57
int
queue_size;
58
pnh_->param(
"queue_size"
, queue_size, 1);
59
sub_mask_
= pnh_->subscribe(
"input"
, queue_size, &
InvertMaskImage::invert
,
this
);
60
ros::V_string
names = boost::assign::list_of(
"~input"
);
61
jsk_topic_tools::warnNoRemap(names);
62
}
63
64
void
InvertMaskImage::unsubscribe
()
65
{
66
sub_mask_
.
shutdown
();
67
}
68
69
void
InvertMaskImage::invert
(
const
sensor_msgs::Image::ConstPtr& mask_msg)
70
{
71
vital_checker_->poke();
72
cv::Mat mask;
73
try
{
74
mask =
cv_bridge::toCvShare
(mask_msg,
"mono8"
)->image;
75
}
catch
(std::exception &e) {
76
ROS_ERROR
(
"cv_bridge exception: %s"
, e.what());
77
return
;
78
}
79
cv::bitwise_not(mask, mask);
80
pub_mask_
.
publish
(
cv_bridge::CvImage
(
81
mask_msg->header,
82
"mono8"
,
83
mask).
toImageMsg
());
84
}
85
}
86
87
#include <
pluginlib/class_list_macros.h
>
88
PLUGINLIB_EXPORT_CLASS
(
jsk_perception::InvertMaskImage
,
nodelet::Nodelet
);
jsk_perception::InvertMaskImage::invert
virtual void invert(const sensor_msgs::Image::ConstPtr &mask_msg)
Definition:
invert_mask_image.cpp:101
invert_mask_image.h
cv_bridge::CvImage::toImageMsg
sensor_msgs::ImagePtr toImageMsg() const
jsk_perception::InvertMaskImage::~InvertMaskImage
virtual ~InvertMaskImage()
Definition:
invert_mask_image.cpp:84
ros::Subscriber::shutdown
void shutdown()
ros::Publisher::publish
void publish(const boost::shared_ptr< M > &message) const
jsk_perception::InvertMaskImage
Definition:
invert_mask_image.h:79
jsk_perception::InvertMaskImage::sub_mask_
ros::Subscriber sub_mask_
Definition:
invert_mask_image.h:124
class_list_macros.h
jsk_perception
Definition:
add_mask_image.h:48
jsk_perception::InvertMaskImage::pub_mask_
ros::Publisher pub_mask_
Definition:
invert_mask_image.h:125
nodelet::Nodelet
cv_bridge.h
ROS_ERROR
#define ROS_ERROR(...)
cv_bridge::CvImage
ros::V_string
std::vector< std::string > V_string
PLUGINLIB_EXPORT_CLASS
PLUGINLIB_EXPORT_CLASS(jsk_perception::InvertMaskImage, nodelet::Nodelet)
cv_bridge::toCvShare
CvImageConstPtr toCvShare(const sensor_msgs::Image &source, const boost::shared_ptr< void const > &tracked_object, const std::string &encoding=std::string())
jsk_perception::InvertMaskImage::onInit
virtual void onInit()
Definition:
invert_mask_image.cpp:77
jsk_perception::InvertMaskImage::unsubscribe
virtual void unsubscribe()
Definition:
invert_mask_image.cpp:96
jsk_perception::InvertMaskImage::subscribe
virtual void subscribe()
Definition:
invert_mask_image.cpp:87
jsk_perception
Author(s): Manabu Saito, Ryohei Ueda
autogenerated on Fri May 16 2025 03:11:17