Herowaree

hsv_threshold.py

Aug 11th, 2021
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #! /usr/bin/env python
  2. import cv2
  3. import rospy
  4. import numpy as np
  5. import argparse
  6.  
  7. from sensor_msgs.msg import Image
  8.  
  9. def callback_tb(value):
  10. pass
  11.  
  12. def setup_trackbars(range_filter):
  13. cv2.namedWindow("Trackbars", 0)
  14.  
  15. for i in ["MIN", "MAX"]:
  16. v = 0 if i == "MIN" else 255
  17.  
  18. for j in range_filter:
  19. cv2.createTrackbar("%s_%s" % (j, i), "Trackbars", v, 255, callback_tb)
  20.  
  21. def get_trackbar_values(range_filter):
  22. values = []
  23.  
  24. for i in ["MIN", "MAX"]:
  25. for j in range_filter:
  26. v = cv2.getTrackbarPos("%s_%s" % (j, i), "Trackbars")
  27. values.append(v)
  28.  
  29. return values
  30.  
  31. def callback(rgb):
  32. img = np.frombuffer(rgb.data, dtype=np.uint8).reshape(rgb.height, rgb.width, -1)
  33. blur = cv2.medianBlur(img, 5)
  34. hsv = cv2.cvtColor(blur, cv2.COLOR_BGR2HSV)
  35. v1_min, v2_min, v3_min, v1_max, v2_max, v3_max = get_trackbar_values('HSV')
  36. thresh = cv2.inRange(hsv, (v1_min, v2_min, v3_min), (v1_max, v2_max, v3_max))
  37.  
  38. preview = cv2.bitwise_and(img, img, mask=thresh)
  39. cv2.imshow("Preview", preview)
  40. cv2.waitKey(3)
  41.  
  42.  
  43. if __name__=="__main__":
  44. parser = argparse.ArgumentParser()
  45.  
  46. parser.add_argument('-c', dest='topic', default='/tb2/camera/rgb/image_color', type=str, help='Topic from ROS')
  47. args = parser.parse_args(rospy.myargv()[1:])
  48. topic = args.topic
  49.  
  50. print("Subscribing to %s" % (topic))
  51.  
  52. setup_trackbars('HSV')
  53.  
  54. rospy.init_node('hsv_threshold')
  55.  
  56. image_sub = rospy.Subscriber(topic, Image, callback)
  57.  
  58. rospy.spin()
Advertisement
Add Comment
Please, Sign In to add comment