Ciclop开源3D扫描仪软件---Horus源码分析之src\horus\engine\calibration\Pattern.py


 *                                                 联系方式:
 *                                                 QQ:2468851091 call:18163325140
 *                                                 Email:2468851091@qq.com
 *

/ ****************************************************************************/ 



# -*- coding: utf-8 -*-
# This file is part of the Horus Project

__author__ = 'Jes煤s Arroyo Torrens <jesus.arroyo@bq.com>'
__copyright__ = 'Copyright (C) 2014-2016 Mundo Reader S.L.'
__license__ = 'GNU General Public License v2 http://www.gnu.org/licenses/gpl2.html'

import numpy as np

from horus import Singleton


@Singleton
class Pattern(object):

    def __init__(self):
        self._rows = 0
        self._columns = 0
        self._square_width = 0
        self.origin_distance = 0

    @property
    def rows(self):
        return self._rows

    @rows.setter
    def rows(self, value):
        value = self.to_int(value)
        if self._rows != value:
            self._rows = value
            self._generate_object_points()

    def set_rows(self, value):
        self.rows = value

    @property
    def columns(self):
        return self._columns

    @columns.setter
    def columns(self, value):
        value = self.to_int(value)
        if self._columns != value:
            self._columns = value
            self._generate_object_points()

    def set_columns(self, value):
        self.columns = value

    @property
    def square_width(self):
        return self._square_width

    @square_width.setter
    def square_width(self, value):
        value = self.to_float(value)
        if self._square_width != value:
            self._square_width = value
            self._generate_object_points()

    def set_square_width(self, value):
        self.square_width = value

    def _generate_object_points(self):
        objp = np.zeros((self.rows * self.columns, 3), np.float32)
        objp[:, :2] = np.mgrid[0:self.columns, 0:self.rows].T.reshape(-1, 2)
        objp = np.multiply(objp, self.square_width)
        self.object_points = objp

    def set_origin_distance(self, value):
        self.origin_distance = self.to_float(value)

    def to_int(self, value):
        try:
            value = int(value)
            if value > 0:
                return value
            else:
                return 0
        except:
            return 0

    def to_float(self, value):
        try:
            value = float(value)
            if value > 0.0:
                return value
            else:
                return 0.0
        except:
            return 0.0


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值