oriented_gradient_node.cpp
Go to the documentation of this file.
1 // @brief sample node to use oriented gradient
2 // @author Hiroaki Yaguchi, JSK
3 
4 #include <vector>
5 #include <string>
6 
7 #include <ros/ros.h>
8 #include <jsk_topic_tools/log_utils.h>
10 #include <cv_bridge/cv_bridge.h>
12 #include <opencv2/imgproc/imgproc.hpp>
13 #include <opencv2/highgui/highgui.hpp>
14 
16 
17 namespace jsk_perception {
18 
20  public:
21  explicit OrientedGradientNode(const ros::NodeHandle& nh) :
22  handle_(nh), image_transport_(nh) {
25  "/camera/rgb/image_raw", 1,
27  cv::namedWindow("OrinetedGradient");
28  }
29 
31  }
32 
33  private:
38  void imageCallback(const sensor_msgs::ImageConstPtr& msg) {
39  cv_bridge::CvImagePtr cv_ptr;
40 
41  try {
43  } catch (cv_bridge::Exception& e) {
44  ROS_ERROR("cv_bridge exception: %s", e.what());
45  return;
46  }
47 
48  cv::Mat cv_img = cv_ptr->image;
49  cv::Mat cv_og_img;
50  cv::Mat cv_out_img;
51 
52  // calcOrientedGradient() will write oriented gradient to
53  // 2nd arg image as HSV format,
54  // H is orientation and V is intensity
55  calcOrientedGradient(cv_img, cv_og_img);
56  cv::cvtColor(cv_og_img, cv_out_img, CV_HSV2BGR);
57  // cv::imshow("OrinetedGradient", cv_out_img);
58  // cv::waitKey(1);
59  sensor_msgs::Image::Ptr out_img = cv_bridge::CvImage(
60  msg->header,
62  cv_out_img).toImageMsg();
63  image_pub_.publish(out_img);
64  }
65 };
66 
67 } // namespace
68 
69 
70 int main(int argc, char** argv) {
71  ros::init(argc, argv, "oriented_gradient");
72  ros::NodeHandle handle("~");
74  ros::spin();
75  return 0;
76 }
77 
78 
msg
msg
image_encodings.h
image_transport::ImageTransport
boost::shared_ptr< CvImage >
cv_bridge::CvImage::toImageMsg
sensor_msgs::ImagePtr toImageMsg() const
ros::init
ROSCPP_DECL void init(const M_string &remappings, const std::string &name, uint32_t options=0)
ros.h
jsk_perception::OrientedGradientNode
Definition: oriented_gradient_node.cpp:19
jsk_perception::OrientedGradientNode::handle_
ros::NodeHandle handle_
Definition: oriented_gradient_node.cpp:34
cv_bridge::Exception
jsk_perception::OrientedGradientNode::image_pub_
image_transport::Publisher image_pub_
Definition: oriented_gradient_node.cpp:37
image_transport::ImageTransport::advertise
Publisher advertise(const std::string &base_topic, uint32_t queue_size, bool latch=false)
image_transport::Subscriber
jsk_perception
Definition: add_mask_image.h:48
cv_bridge::toCvCopy
CvImagePtr toCvCopy(const sensor_msgs::CompressedImage &source, const std::string &encoding=std::string())
image_transport::ImageTransport::subscribe
Subscriber subscribe(const std::string &base_topic, uint32_t queue_size, const boost::function< void(const sensor_msgs::ImageConstPtr &)> &callback, const ros::VoidPtr &tracked_object=ros::VoidPtr(), const TransportHints &transport_hints=TransportHints())
argv
ROS_INFO ROS_ERROR int pointer * argv
image_transport::Publisher::publish
void publish(const sensor_msgs::Image &message) const
image_transport.h
main
int main(int argc, char **argv)
Definition: oriented_gradient_node.cpp:70
jsk_perception::OrientedGradientNode::image_transport_
image_transport::ImageTransport image_transport_
Definition: oriented_gradient_node.cpp:35
jsk_perception::calcOrientedGradient
void calcOrientedGradient(cv::Mat &src, cv::Mat &dst)
Definition: oriented_gradient.cpp:15
image_transport::Publisher
cv_bridge.h
ROS_ERROR
#define ROS_ERROR(...)
cv_bridge::CvImage
jsk_perception::OrientedGradientNode::OrientedGradientNode
OrientedGradientNode(const ros::NodeHandle &nh)
Definition: oriented_gradient_node.cpp:21
ros::spin
ROSCPP_DECL void spin()
sensor_msgs::image_encodings::BGR8
const std::string BGR8
jsk_perception::OrientedGradientNode::imageCallback
void imageCallback(const sensor_msgs::ImageConstPtr &msg)
Definition: oriented_gradient_node.cpp:38
jsk_perception::OrientedGradientNode::image_sub_
image_transport::Subscriber image_sub_
Definition: oriented_gradient_node.cpp:36
oriented_gradient.hpp
jsk_perception::OrientedGradientNode::~OrientedGradientNode
~OrientedGradientNode()
Definition: oriented_gradient_node.cpp:30
ros::NodeHandle


jsk_perception
Author(s): Manabu Saito, Ryohei Ueda
autogenerated on Fri May 16 2025 03:11:17