-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Get depth frame failed #120
Comments
Which device are you using? Could you provide more code or the SDK logs for us to review? |
the device is gemini335L. # ******************************************************************************
# Copyright (c) 2023 Orbbec 3D Technology, Inc
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http:# www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ******************************************************************************
import argparse
import sys
import cv2
import numpy as np
from pyorbbecsdk import *
from utils import frame_to_bgr_image
ESC_KEY = 27
def main(argv):
pipeline = Pipeline()
device = pipeline.get_device()
device_info = device.get_device_info()
device_pid = device_info.get_pid()
config = Config()
parser = argparse.ArgumentParser()
parser.add_argument("-m", "--mode",
help="align mode, HW=hardware mode,SW=software mode,NONE=disable align",
type=str, default='HW')
parser.add_argument("-s", "--enable_sync", help="enable sync", type=bool, default=True)
args = parser.parse_args()
align_mode = args.mode
enable_sync = args.enable_sync
try:
profile_list = pipeline.get_stream_profile_list(OBSensorType.COLOR_SENSOR)
color_profile = profile_list.get_default_video_stream_profile()
config.enable_stream(color_profile)
profile_list = pipeline.get_stream_profile_list(OBSensorType.DEPTH_SENSOR)
assert profile_list is not None
depth_profile = profile_list.get_default_video_stream_profile()
assert depth_profile is not None
print("color profile : {}x{}@{}_{}".format(color_profile.get_width(),
color_profile.get_height(),
color_profile.get_fps(),
color_profile.get_format()))
print("depth profile : {}x{}@{}_{}".format(depth_profile.get_width(),
depth_profile.get_height(),
depth_profile.get_fps(),
depth_profile.get_format()))
config.enable_stream(depth_profile)
except Exception as e:
print(e)
return
if align_mode == 'HW':
if device_pid == 0x066B:
# Femto Mega does not support hardware D2C, and it is changed to software D2C
config.set_align_mode(OBAlignMode.SW_MODE)
else:
config.set_align_mode(OBAlignMode.HW_MODE)
elif align_mode == 'SW':
config.set_align_mode(OBAlignMode.SW_MODE)
else:
config.set_align_mode(OBAlignMode.DISABLE)
if enable_sync:
try:
pipeline.enable_frame_sync()
except Exception as e:
print(e)
try:
pipeline.start(config)
except Exception as e:
print(e)
return
while True:
try:
frames: FrameSet = pipeline.wait_for_frames(100)
if frames is None:
continue
# color_frame = frames.get_color_frame()
# if color_frame is None:
# print("color_faild")
# continue
# # covert to RGB format
# color_image = frame_to_bgr_image(color_frame)
# if color_image is None:
# print("failed to convert frame to image")
# continue
depth_frame = frames.get_depth_frame()
if depth_frame is None:
print("depth_faild")
continue
width = depth_frame.get_width()
height = depth_frame.get_height()
scale = depth_frame.get_depth_scale()
depth_data = np.frombuffer(depth_frame.get_data(), dtype=np.uint16)
depth_data = depth_data.reshape((height, width))
depth_data = depth_data.astype(np.float32) * scale
depth_image = cv2.normalize(depth_data, None, 0, 255, cv2.NORM_MINMAX, dtype=cv2.CV_8U)
depth_image = cv2.applyColorMap(depth_image, cv2.COLORMAP_JET)
# overlay color image on depth image
depth_image = cv2.addWeighted(color_image, 0.5, depth_image, 0.5, 0)
cv2.imshow("SyncAlignViewer ", depth_image)
key = cv2.waitKey(1)
if key == ord('q') or key == ESC_KEY:
break
except KeyboardInterrupt:
break
pipeline.stop()
if __name__ == "__main__":
main(sys.argv[1:]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
When I run the SyncAlignViewer.cpp, it can not get depth frame, and in other cpp file, this is also very common in other examples.
How can I solve this problem?
The text was updated successfully, but these errors were encountered: