【问题标题】:RGB image captured by Intel realsense camera is dark (using python code)英特尔实感摄像头拍摄的 RGB 图像较暗(使用 python 代码)
【发布时间】:2021-02-18 08:33:38
【问题描述】:

我正在使用下面的 python 代码使用 Intel realsense (D 435i) 相机拍摄 RGB 图像。 python代码捕获的图像是暗的。但是,当我使用相机的 SDK 时,图像并不暗。如何拍摄与相机 SDK 拍摄的图像质量相同的图像?

提前感谢您的帮助。

import pyrealsense2 as rs
import numpy as np
import cv2
import time
import math

pipeline = rs.pipeline()
config = rs.config()

config.enable_stream(rs.stream.depth, 1280, 720, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 1280, 720, rs.format.bgr8, 30)

profile = pipeline.start(config)
depth_sensor = profile.get_device().first_depth_sensor()
depth_scale = depth_sensor.get_depth_scale()

# We will be removing the background of objects more than
#  clipping_distance_in_meters meters away
clipping_distance_in_meters = 1.5 
clipping_distance = clipping_distance_in_meters / depth_scale


align_to = rs.stream.color
align = rs.align(align_to)

frames = pipeline.wait_for_frames()

aligned_frames = align.process(frames)
aligned_depth_frame = aligned_frames.get_depth_frame()
color_frame = aligned_frames.get_color_frame()

depth_image = np.asanyarray(aligned_depth_frame.get_data())
color_image = np.asanyarray(color_frame.get_data())


# Remove background - Set pixels further than clipping_distance to grey
grey_color = 153
depth_image_3d = np.dstack((depth_image,depth_image,depth_image)) #depth image is 1 channel, color is 3 channels
bg_removed = np.where((depth_image_3d > clipping_distance) | (depth_image_3d <= 0), grey_color, color_image)

# Render images
depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)
images = np.hstack((bg_removed, depth_colormap))
cv2.namedWindow('Align Example', cv2.WINDOW_AUTOSIZE)

# Filename 
path = 'C:/Users/aatefi2/Desktop/Intel real sense/Codes/'
imageName1 = str(time.strftime("%Y_%m_%d_%H_%M_%S")) +  '_Color.jpg'
imageName2 = str(time.strftime("%Y_%m_%d_%H_%M_%S")) +  '_Depth.jpg'
imageName3 = str(time.strftime("%Y_%m_%d_%H_%M_%S")) +  '_bg_removed.jpg'
imageName4 = str(time.strftime("%Y_%m_%d_%H_%M_%S")) +  '_ColorDepth.jpg'
imageName5 = str(time.strftime("%Y_%m_%d_%H_%M_%S")) +  '_DepthColormap.jpg'

# Saving the image 
cv2.imwrite(imageName1, color_image) 
cv2.imwrite(imageName2, depth_image) 
cv2.imwrite(imageName3, images) 
cv2.imwrite(imageName4, bg_removed )
cv2.imwrite(imageName5, depth_colormap )

key = cv2.waitKey(1)
# Press esc or 'q' to close the image window
cv2.destroyAllWindows()

pipeline.stop()

【问题讨论】:

    标签: python rgb intel realsense


    【解决方案1】:

    我添加了以下代码来手动更改曝光时间 (https://github.com/IntelRealSense/librealsense/issues/4449)。图像(通过此手动设置捕获)比通过自动曝光设置捕获的图像更亮。

    # The code to set exposure time manually#
    
    profile = pipeline.start(config)
    
    
    # Get the sensor once at the beginning. (Sensor index: 1)
    sensor = pipeline.get_active_profile().get_device().query_sensors()[1]
    
    
    # Set the exposure anytime during the operation
    sensor.set_option(rs.option.exposure, 156.000)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      相关资源
      最近更新 更多