コード例 #1
0
def main():
    """Produce PLY point clouds from stereo image pair."""
    parser = argparse.ArgumentParser(description="Read images taken with "
                                     "stereo pair and use them to produce 3D "
                                     "point clouds that can be viewed with "
                                     "MeshLab.",
                                     parents=[STEREO_BM_FLAG])
    parser.add_argument("calibration", help="Path to calibration folder.")
    parser.add_argument("left", help="Path to left image")
    parser.add_argument("right", help="Path to right image")
    parser.add_argument("output", help="Path to output file.")
    parser.add_argument("--bm_settings",
                        help="Path to block matcher's settings.")
    args = parser.parse_args()

    image_pair = [cv2.imread(image) for image in [args.left, args.right]]
    calib_folder = args.calibration
    if args.use_stereobm:
        block_matcher = StereoBM()
    else:
        block_matcher = StereoSGBM()
    if args.bm_settings:
        block_matcher.load_settings(args.bm_settings)

    camera_pair = CalibratedPair(None,
                                 StereoCalibration(input_folder=calib_folder),
                                 block_matcher)
    rectified_pair = camera_pair.calibration.rectify(image_pair)
    points = camera_pair.get_point_cloud(rectified_pair)
    points = points.filter_infinity()
    points.write_ply(args.output)
コード例 #2
0
ファイル: main.py プロジェクト: imdanielsp/electric-vision
def run():
    motor_controller = MotorController('/dev/cu.usbmodem14211')
    sp = StereoPair(DEVICES_ID)
    block_matcher = StereoBM()

    camera_pair = CalibratedPair(
        None, StereoCalibration(input_folder='calibration/'), block_matcher)

    current_value = None
    last_size = None
    i = 0
    while True:
        frames_single_img = sp.get_frames()
        points = camera_pair.get_point_cloud(frames_single_img)
        points = points.filter_infinity()

        number = []
        for level1 in points.coordinates:
            if not level1[2] == 512:
                number.append([0.0, 0.0, level1[2]])
        number_size = len(number)
        if last_size:
            current_value = (number_size + last_size) / 2
            # print current_value
        last_size = number_size
        i += 1

        motor_state = False
        if not current_value >= 3000:
            print current_value
            motor_state = True
        motor_controller.send(motor_state)
コード例 #3
0
 def __init__(self,
              calib_foler='calib_files_test',
              SGBM_setting='settings/SGBM'):
     self.calibration = StereoCalibration(input_folder=calib_foler)
     self.block_matcher = StereoSGBM()
     self.block_matcher.load_settings(settings=SGBM_setting)
     self.CalibratedPair = CalibratedPair(None, self.calibration,
                                          self.block_matcher)
     self.imageSize = (1280, 720)
     self.left_img = None
     self.right_img = None
コード例 #4
0
 def setup_full_operation(self):
     print(
         'WARNING: This step should be run after calibration is successful.'
     )
     self._stereo_rig = CalibratedPair(
         None, StereoCalibration(input_folder='calib'), StereoBM())
コード例 #5
0
from stereovision.stereo_cameras import StereoPair
from stereovision.stereo_cameras import CalibratedPair
from stereovision.calibration import StereoCalibration
from stereovision.blockmatchers import StereoBM
import numpy as np

# NOTE: INCLUDED CALIB FILES ARE FOR THE (LEFT, RIGHT) STEREOPAIR.
#       DO NOT USE (LEFT, CENTER)

# camera numbers
devices = (1, 2)
st_pair = StereoPair(devices)
st_bm = StereoBM(stereo_bm_preset=.0,
                 search_range=80,
                 window_size=21,
                 settings=None)
load_calib = StereoCalibration(st_pair, input_folder='calib_leftright')
cal_pair = CalibratedPair(devices, load_calib, st_bm)

cal_pair.live_point_cloud(devices)
np.save("cloudtest.npy", np.ndarray(cal_pair.live_point_cloud(devices)))
コード例 #6
0
import cv2
from stereovision.blockmatchers import StereoBM, StereoSGBM
from stereovision.calibration import StereoCalibration
from stereovision.stereo_cameras import CalibratedPair
from stereovision.ui_utils import STEREO_BM_FLAG

if __name__ == '__main__':
    image_pair = [
        cv2.imread(image)
        for image in ['./test/left_test.jpg', './test/right_test.jpg']
    ]
    calib_folder = 'calibration_result'

    use_stereobm = False
    bm_settings = 'bm_setting'

    if use_stereobm:
        block_matcher = StereoBM()
    else:
        block_matcher = StereoSGBM()
    if bm_settings:
        block_matcher.load_settings(bm_settings)

    camera_pair = CalibratedPair(None,
                                 StereoCalibration(input_folder=calib_folder),
                                 block_matcher)
    rectified_pair = camera_pair.calibration.rectify(image_pair)
    points = camera_pair.get_point_cloud(rectified_pair)
    points = points.filter_infinity()
    points.write_ply('./test/test_poc')
コード例 #7
0
from stereovision.stereo_cameras import StereoPair
from stereovision.stereo_cameras import CalibratedPair
from stereovision.calibration import StereoCalibration as StereoCalibration
from stereovision.blockmatchers import BlockMatcher as Blockmatcher

file_path = 'calib'

calibration = StereoCalibration(input_folder="../../calib/")

devices = (1, 2)
st_pair = StereoPair(devices)
bl_match = Blockmatcher(calibration)
cal_pair = CalibratedPair(st_pair, calibration, bl_match)

if calibration:
    calibration.export("calibrated_cameras")