def parse_meta(meta_ifp, width, height, camera_name, op):
        """Parse a :code:`meta.ini` file in the :code:`MVE` workspace."""
        view_specific_dir = os.path.dirname(meta_ifp)
        relative_image_fp = os.path.join(view_specific_dir, "undistorted.png")
        image_dp = os.path.dirname(view_specific_dir)

        camera = Camera()
        camera.image_fp_type = Camera.IMAGE_FP_TYPE_RELATIVE
        camera.image_dp = image_dp
        camera._relative_fp = relative_image_fp
        camera._absolute_fp = os.path.join(image_dp, relative_image_fp)
        camera._undistorted_relative_fp = camera._relative_fp
        camera._undistorted_absolute_fp = camera._absolute_fp

        camera.width = width
        camera.height = height

        ini_config = configparser.RawConfigParser()
        ini_config.read(meta_ifp)
        focal_length_normalized = float(
            ini_config.get(section="camera", option="focal_length")
        )
        pixel_aspect = float(
            ini_config.get(section="camera", option="pixel_aspect")
        )
        if pixel_aspect != 1.0:
            log_report(
                "WARNING",
                "Focal length differs in x and y direction,"
                + " setting it to the average value.",
                op,
            )
            focal_length_normalized = (
                focal_length_normalized
                + focal_length_normalized * pixel_aspect
            ) / 2

        max_extend = max(width, height)
        focal_length = focal_length_normalized * max_extend

        principal_point_str = ini_config.get(
            section="camera", option="principal_point"
        )
        principal_point_list = MVEFileHandler._str_to_arr(
            principal_point_str, target_type=float
        )
        cx_normalized = principal_point_list[0]
        cy_normalized = principal_point_list[1]
        cx = cx_normalized * width
        cy = cy_normalized * height

        calib_mat = Camera.compute_calibration_mat(focal_length, cx, cy)
        camera.set_calibration_mat(calib_mat)

        radial_distortion_str = ini_config.get(
            section="camera", option="radial_distortion"
        )
        radial_distortion_vec = np.asarray(
            MVEFileHandler._str_to_arr(
                radial_distortion_str, target_type=float
            )
        )
        check_radial_distortion(radial_distortion_vec, relative_image_fp, op)

        rotation_str = ini_config.get(section="camera", option="rotation")
        rotation_mat = np.asarray(
            MVEFileHandler._str_to_arr(rotation_str, target_type=float)
        ).reshape((3, 3))

        translation_str = ini_config.get(
            section="camera", option="translation"
        )
        translation_vec = np.asarray(
            MVEFileHandler._str_to_arr(translation_str, target_type=float)
        )

        camera.set_rotation_with_rotation_mat(rotation_mat)
        camera.set_camera_translation_vector_after_rotation(translation_vec)
        return camera
Parse a :code:`meta.ini` file in the :code:`MVE` workspace.
photogrammetry_importer/file_handlers/mve_file_handler.py