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)
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)
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
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())
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)))
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')
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")