Поэтому я пытаюсь преобразовать видеопоток веб-камеры с openCV внутри ROS в формат HSV и хотел бы наложить на него маску обнаружения цвета. Это мой код:
class image_converter():
def __init__(self):
self.bridge = CvBridge()
self.image_sub = rospy.Subscriber("/usb_cam/image_raw", Image, self.callback)
def callback(self, ros_image):
print("get an image")
self.cv_image = self.bridge.imgmsg_to_cv2(ros_image, "bgr8")
cv2.imshow("Image_window", self.cv_image)
cv2.waitKey(3)
return self.cv_image
def toHSV(self, cv_image):
print("HSV")
self.hsv = cv2.cvtColor(cv_image, cv2.COLOR_BGR2HSV)
cv2.imshow("HSV window", self.hsv)
cv2.waitKey(3)
return self.hsv
def mask(self, hsv):
print("mask")
yellowlower = (30, 150, 100)
yellowupper = (60, 255, 255)
self.mask = cv2.inRange(self.hsv, yellowlower, yellowupper)
cv2.imshow("Green", mask)
cv2.waitKey(3)
return mask
def main(args):
rospy.init_node("image_converter", anonymous=True)
try:
image_converter()
rospy.spin()
except KeyboardInterrupt:
print("Shutting down")
cv2.waitKey(3)
cv2.destroyAllWindows()
if __name__ == "__main__":
main(sys.argv)
Когда я запускаю код, открывается только одно окно с необработанным изображением, но это все. Два других windows с изображением HSV и маской не открываются. Поскольку я довольно новичок во всем python, решение может быть очень простым, но я не могу его найти.
Заранее спасибо!