Как я могу прочитать IP-адрес (видео) в Python и подключить его к ROS?

🖐️ Я пытаюсь подключить IP-адрес к ROS.

У меня есть камера ESP32, которая отправляет видео по беспроводной сети с IP-адресом.

Итак, у меня есть IP-адрес, и я хотел бы поместить его в питон, чтобы подключиться к ROS 1 NOETIC.

это код:

      #!/usr/bin/env python

import cv2
import urllib 
import numpy as np
from sensor_msgs.msg import Image 
import roslib
import sys
import rospy
from std_msgs.msg import String
from cv_bridge import CvBridge, CvBridgeError 
import argparse

########################################################################################################
####################################### IP Address #####################################################
########################################################################################################

IP_address = '192.168.1.6'


########################################################################################################
#################################### IPCamera classs ###################################################
########################################################################################################

class IPCamera(object):
    def __init__(self, url):
        try:
            self.stream=urllib.urlopen(url)
        except:
            rospy.logerr('Unable to open camera stream: ' + str(url))
            sys.exit() #'Unable to open camera stream')
        self.bytes=''
        self.image_pub = rospy.Publisher("camera_image", Image, queue_size=10)
        self.bridge = CvBridge()

########################################################################################################
######################################### Main #########################################################
########################################################################################################

if __name__ == '__main__':
    parser = argparse.ArgumentParser(prog='ip_camera.py', description='reads a given url string and dumps it to a ros_image topic')

    # Para visualizar la imagen capturada del LAN ip cam: $ rosrun camera_pkg publisher.py --gui
    parser.add_argument('-g', '--gui', action='store_true', help='show a GUI of the camera stream')
    # Definir la direccion ip agragando la url del stream en default o ejecutar en ventana de comandos : $rosrun camera_pkg publisher.py -u YOUR_CAMERA_URL --gui
    parser.add_argument('-u', '--url', default='http://'+ IP_address +'/cam-hi.jpg', help='camera stream url to parse')
    args = parser.parse_args()
    
    rospy.init_node('IPCamera', anonymous=True)
    ip_camera = IPCamera(args.url)

    while not rospy.is_shutdown():
        ip_camera.bytes += ip_camera.stream.read(1024)
        a = ip_camera.bytes.find('\xff\xd8')
        b = ip_camera.bytes.find('\xff\xd9')
        if a!=-1 and b!=-1:
            jpg = ip_camera.bytes[a:b+2]
            ip_camera.bytes= ip_camera.bytes[b+2:]
            if len(jpg) >0:
                i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),cv2.IMREAD_COLOR)
            image_message = i   
            ip_camera.image_pub.publish(ip_camera.bridge.cv2_to_imgmsg(image_message, "bgr8"))

            if args.gui:
                cv2.imshow('IP Camera Publisher Cam',i)
            if cv2.waitKey(1) ==27: # wait until ESC key is pressed in the GUI window to stop it
                exit(0) 

Думаю, ошибки в классе:

class IPCamera(object):

введите описание изображения здесь

КАК Я МОГУ ПОДКЛЮЧИТЬ IP-АДРЕС К ROS? ИЛИ МОЖЕТ БЫТЬ КТО-ТО МОЖЕТ ПОМОЧЬ В ЧЕМ Я ХОЧУ СДЕЛАТЬ У меня есть камера ESP32, и я хочу использовать камеру для отправки видео по беспроводной связи.

Затем обнаруживайте объекты с помощью камеры и с помощью программирования ... все в ROS.

Пожалуйста, если кто-то может мне помочь, я новичок ... Спасибо ☘️ ☘️ ⭐

0 ответов

Другие вопросы по тегам