Расчет расстояния от камеры Intel Realsense R200 Depth

Я пытался рассчитать расстояния до объектов со значениями камеры R200. Я установил PyRealsense и librealsense (устаревший). И примеры PyRealsense работают без проблем.

Я создал код для этой цели:

import pyrealsense as pyrs
from pyrealsense.constants import rs_option
depth_stream = pyrs.stream.DepthStream()
infrared_stream = pyrs.stream.InfraredStream()

with pyrs.Service() as serv:
    with serv.Device(streams=(depth_stream, infrared_stream, )) as dev:
        #dev.apply_ivcam_preset(0)
        while True:
            dev.wait_for_frames()

            print(dev.infrared) 

Он возвращает матрицу, значения которой меняются в зависимости от положения объекта:

 [37 37 39 ... 20 20 21]
 [35 35 38 ... 17 18 19]
 [34 33 37 ... 19 20 20]]
[[40 36 30 ... 16 15 17]
 [40 37 28 ... 14 14 19]
 [42 39 28 ... 14 16 20]

Какой столбец этой матрицы представляет значение расстояния или что мне делать, чтобы рассчитать расстояние.


person Mustafa Sarıalp    schedule 11.06.2018    source источник
comment
Вместо того, чтобы редактировать свой вопрос и добавлять [РЕШЕНО] в заголовок, вы должны создать ответ и пометить его как правильный, это правильный способ указать, что проблема была решена в SO   -  person eyllanesc    schedule 23.06.2018


Ответы (1)


При поиске в Google я нашел пример расчета расстояния с камерой RealSense:

https://github.com/intel/intel-iot-refkit/blob/master/meta-refkit-extra/doc/computervision.rst

Мне пришлось отредактировать его, чтобы он работал с PyRealSense 2.0:

#!/usr/bin/python3

import sys

import numpy as np
import cv2
import pyrealsense as pyrs

with pyrs.Service() as serv:
    serv.start()
    with serv.Device() as cam:
        cat_cascade = cv2.CascadeClassifier("/usr/share/opencv/haarcascades/haarcascade_frontalcatface.xml")

        for x in range(30):
            # stabilize exposure
            cam.wait_for_frames()

        while True:
        # get image from web cam
            cam.wait_for_frames()
            img = cam.color

            cats = cat_cascade.detectMultiScale(img)
            for (x,y,w,h) in cats:
                # find center
                cx = int(round(x+(w/2)))
                cy = int(round(y+(h/2)))

                depth = cam.depth[cy][cx]

                print("Cat found, distance " + str(depth/10.0) + " cm")

Он вычисляет расстояние, когда показывает кошачью мордочку. Я начал изучать Tensorflow, и мои знания об OpenCV плохие. Можете ли вы объяснить мне, как проще всего перенести этот код в TensorFlow или CAFFE.

person Mustafa Sarıalp    schedule 23.06.2018