Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. #include <ros/ros.h>
  2. #include <image_transport/image_transport.h>
  3. #include <geometry_msgs/Twist.h>
  4. #include <nav_msgs/Odometry.h>
  5. #include <cv_bridge/cv_bridge.h>
  6. #include <opencv2/imgproc/imgproc.hpp>
  7. #include <opencv2/highgui/highgui.hpp>
  8. #include <sensor_msgs/image_encodings.h>
  9. #include <iostream>
  10. #include <cmath>
  11. #include <tuple>
  12. #include <std_srvs/Empty.h>
  13.  
  14.  
  15. using namespace std;
  16. using namespace cv;
  17.  
  18.  
  19. int low_r=85, low_g=0, low_b=0;
  20. int high_r=255, high_g=50, high_b=50;
  21.  
  22. static const std::string IME_PROZORA = "Robo0 kamera";
  23.  
  24. float u0=160.5; //zadano u zadatku ne moramo gledati u matricu
  25. float f = 265.23;
  26.  
  27. image_transport::Publisher objav;
  28.  
  29. void slikaPovPoziv(const sensor_msgs::ImageConstPtr& msg) {
  30. cv::Mat frame_threshold, ballPixels;
  31.  
  32. cv_bridge::CvImagePtr cv_ptr;
  33.  
  34. try {
  35. cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);
  36. }
  37. catch (cv_bridge::Exception& e) {
  38. ROS_ERROR("cv_bridge exception: %s", e.what());
  39. return;
  40. }
  41.  
  42.  
  43. cv::inRange(cv_ptr->image,Scalar(low_b, low_g, low_r), Scalar(high_b,high_g,high_r), frame_threshold);
  44.  
  45. cv::findNonZero(frame_threshold, ballPixels);
  46.  
  47.  
  48. auto mid = ballPixels.begin() + ballPixels.size()/2; //meni tu baca errore
  49.  
  50.  
  51. // ažuriraj sliku
  52. cv::imshow(IME_PROZORA, cv_ptr->image);
  53. imshow("Object Detection",frame_threshold);
  54.  
  55. cv::waitKey(3);
  56.  
  57. // objavi izmjenjenu sliku
  58. objav.publish(cv_ptr->toImageMsg());
  59. }
  60.  
  61.  
  62. int main(int argc, char** argv)
  63. {
  64. ros::init(argc, argv, "image_converter");
  65. ros::NodeHandle node;
  66.  
  67. cv::namedWindow(IME_PROZORA);
  68.  
  69. image_transport::ImageTransport im_trans(node);
  70.  
  71. image_transport::Subscriber pret = im_trans.subscribe("/robo0/camera/image", 1,
  72. &slikaPovPoziv); //subscriber za detekciju objekta na temelju crvene boje
  73.  
  74.  
  75. objav = im_trans.advertise("/processed/image", 1);
  76.  
  77. ros::spin();
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement