Подписка на узел ROS и отображение полученных изображений в графическом интерфейсе с использованием Pyqt4 - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь подписаться на видеопоток ROS.Я знаю, что могу правильно подписаться на правильный ростопик, поскольку могу сохранять изображения, полученные из видео.

Следующее, что я пытаюсь сделать, - это показать канал видео на графическом интерфейсе пользователя PyQt4.,Графический интерфейс имеет и другие функции, кроме отображения только изображений.

Я использую cvbridge для преобразования изображений ROS в изображения Opencv.Но я не могу отобразить полученные изображения в графическом интерфейсе.Я нашел способ показа видео, что не так красиво.Сначала я сохраняю файл изображения, а затем читаю его для отображения видео в графическом интерфейсе.Но оно дает прерывистое, а не плавное видео.

Это моя функция обратного вызова ROS для обновления моих изображений

def image_callback(msg):
    print("Received an image!")
    try:
        # Convert your ROS Image message to OpenCV2
        cv2_img = bridge.imgmsg_to_cv2(msg, "bgr8")
    except CvBridgeError, e:
        print(e)
    else:
        # Save your OpenCV2 image as a jpeg 
        cv2.imwrite('camera_image.jpeg', cv2_img)
        #cv2.imshow('Video', cv2_img)

Ниже приведен мой код для обновления изображения в графическом интерфейсе (обратите внимание, чтоВ настоящее время я загружаю сохраненное изображение, чтобы отобразить его в графическом интерфейсе):

def update_frame(self):
        img = cv2_img
        #print(img.shape)
        self.basecam_videofeed.setPixmap(QtGui.QPixmap(_fromUtf8('camera_image.jpeg')))    

                                                                                         self.basecam_videofeed.setPixmap(QtGui.QPixmap(_fromUtf8('camera_image.jpeg')))

Я закомментировал строку print (img.shape), поскольку она выдает ошибку, что img не имеет формы атрибута.Я хотел бы знать, как я могу использовать свое изображение напрямую и отображать его в графическом интерфейсе, не сохраняя и не загружая его снова.Могу ли я напрямую использовать глобальную переменную cv2_img?Я дал ему много разных попыток, но я всегда сталкиваюсь с ошибками.Мне интересно, преобразовывает ли cvbridge изображения ros в правильный формат?

...