При отображении изображения беседки в реальном времени с использованием ROS изображение глубины выглядит странно и имеетPython

Программы на Python
Ответить
Anonymous
 При отображении изображения беседки в реальном времени с использованием ROS изображение глубины выглядит странно и имеет

Сообщение Anonymous »

Пытаюсь отобразить изображения, снятые Realsense в моей симуляции беседки, в окне opencv. Но изображение глубины выглядит красочным, несмотря на то, что rviz показывает черно-белое изображение. И необработанное изображение, и изображение глубины с одной и той же камеры имеют разный размер, несмотря на отсутствие изменения размера. Я хочу, чтобы симуляция имела тот же результат, что и реальная сцена с камерой RealSense. Как я могу это исправить? Ниже мое изображение, показывающее коды Python, файл запуска и изображение выходных изображений. На всякий случай вот git:

https://github.com/brian2lee/forklift_test/tree/main

Дополнение realsense d435, используемое в беседке:

https://github.com/issaiass/realsense2_description
https://github.com/issaiass/realsense_gazebo_plugin

Изменить: Цветная карта глубины была решена @Christoph Rackwitz, обновил код, теперь показывает нормальную карту глубины, но проблема с размером остается.
изображения (сверху) слева, 1.opencv raw 2. глубина opencv 3. глубина rviz):
Изображение

im_show.py:
#!/usr/bin/env python3
import rospy
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError

class ImageConverter:

def __init__(self):
self.bridge = CvBridge()
self.image_sub = rospy.Subscriber("/camera/color/image_raw", Image, self.callback)

def callback(self, data):
try:
# Convert the ROS Image message to a CV2 image
cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")
except CvBridgeError as e:
print(e)
return

# Display the image in an OpenCV window
cv2.imshow("Camera Image", cv_image)
cv2.waitKey(3)

def main():
rospy.init_node('image_converter', anonymous=True)
ic = ImageConverter()

try:
rospy.spin()
except KeyboardInterrupt:
print("Shutting down")
cv2.destroyAllWindows()

if __name__ == '__main__':
main()

img_show_depth.py:
#!/usr/bin/env python3
import rospy
import cv2
import numpy as np
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError

class DepthImageConverter:

def __init__(self):
self.bridge = CvBridge()
self.image_sub = rospy.Subscriber("/camera/depth/image_raw", Image, self.callback)

def callback(self, data):
try:
# Convert the ROS Image message to a CV2 depth image
cv_image = self.bridge.imgmsg_to_cv2(data, desired_encoding="passthrough")
except CvBridgeError as e:
print(e)
return

# Normalize the depth image to fall within 0-255 and convert it to uint8
cv_image_norm = cv2.normalize(cv_image, None, 0, 255, cv2.NORM_MINMAX)
depth_map = cv_image_norm.astype(np.uint8)

# Display the depth image in an OpenCV window
cv2.imshow("Depth Image", depth_map)
cv2.waitKey(3)

def main():
rospy.init_node('depth_image_converter', anonymous=True)
dic = DepthImageConverter()

try:
rospy.spin()
except KeyboardInterrupt:
print("Shutting down")
cv2.destroyAllWindows()

if __name__ == '__main__':
main()

gazebo.launch:
































Подробнее здесь: https://stackoverflow.com/questions/788 ... and-having
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»