【RealSense】AR 마커의 위치 취득
rsAruco.py
# coding: utf-8
import pyrealsense2 as rs
import numpy as np
import cv2
aruco = cv2.aruco
dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)
pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
print("Start streaming")
pipeline.start(config)
cv2.namedWindow('RealsenseImage', cv2.WINDOW_AUTOSIZE)
while True:
frames = pipeline.wait_for_frames()
depth_frame = frames.get_depth_frame()
color_frame = frames.get_color_frame()
color_intrinsics = color_frame.profile.as_video_stream_profile().intrinsics
depth_image = np.asanyarray(depth_frame.get_data())
color_image = np.asanyarray(color_frame.get_data())
gray_image = cv2.cvtColor(color_image, cv2.COLOR_RGB2BGR)
corners, ids, rejectedImgPoints = aruco.detectMarkers(gray_image, dictionary)
if len(corners)!=0:
point = np.average(corners[0][0], axis=0)
depth = depth_frame.get_distance(point[0], point[1])
point = np.append(point,depth)
if depth!=0:
x=point[0]
y=point[1]
z=point[2]
x,y,z=rs.rs2_deproject_pixel_to_point(color_intrinsics, [x, y], z)
print("point:",x,y,z)
aruco.drawDetectedMarkers(color_image, corners, ids, (0,255,0))
depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)
images = np.hstack((color_image, depth_colormap))
cv2.imshow("RealsenseImage",images)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
아래 사진과 같이 AR 마커의 3차원 정보가 출력됩니다.
프로그램 해설
ArCuo 라이브러리를 사용하여 Ar 마커를 인식하는 방법은 다음과 같습니다.
먼저 다음과 같이 aruco의 인스턴스를 생성합니다.
aruco = cv2.aruco
그런 다음
getPredefinedDictionary
함수를 사용하여 dictionnary
변수에 저장합니다. aruco.DICT_4x4_50
에서 50개의 마커가 생성됩니다.dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)
그리고는
dictionnary
와 그레이 이미지를 넣으면 검출해 줍니다.corners, ids, rejectedImgPoints = aruco.detectMarkers(gray_image, dictionary)
Reference
이 문제에 관하여(【RealSense】AR 마커의 위치 취득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hoshianaaa/items/06f092cbf23287200481텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)