void ProjectorBase::setCameraParams(InputArray _K, InputArray _R, InputArray _T) { Mat K = _K.getMat(), R = _R.getMat(), T = _T.getMat(); CV_Assert(K.size() == Size(3, 3) && K.type() == CV_32F); CV_Assert(R.size() == Size(3, 3) && R.type() == CV_32F); CV_Assert((T.size() == Size(1, 3) || T.size() == Size(3, 1)) && T.type() == CV_32F); Mat_<float> K_(K); k[0] = K_(0,0); k[1] = K_(0,1); k[2] = K_(0,2); k[3] = K_(1,0); k[4] = K_(1,1); k[5] = K_(1,2); k[6] = K_(2,0); k[7] = K_(2,1); k[8] = K_(2,2); Mat_<float> Rinv = R.t(); rinv[0] = Rinv(0,0); rinv[1] = Rinv(0,1); rinv[2] = Rinv(0,2); rinv[3] = Rinv(1,0); rinv[4] = Rinv(1,1); rinv[5] = Rinv(1,2); rinv[6] = Rinv(2,0); rinv[7] = Rinv(2,1); rinv[8] = Rinv(2,2); Mat_<float> R_Kinv = R * K.inv(); r_kinv[0] = R_Kinv(0,0); r_kinv[1] = R_Kinv(0,1); r_kinv[2] = R_Kinv(0,2); r_kinv[3] = R_Kinv(1,0); r_kinv[4] = R_Kinv(1,1); r_kinv[5] = R_Kinv(1,2); r_kinv[6] = R_Kinv(2,0); r_kinv[7] = R_Kinv(2,1); r_kinv[8] = R_Kinv(2,2); Mat_<float> K_Rinv = K * Rinv; k_rinv[0] = K_Rinv(0,0); k_rinv[1] = K_Rinv(0,1); k_rinv[2] = K_Rinv(0,2); k_rinv[3] = K_Rinv(1,0); k_rinv[4] = K_Rinv(1,1); k_rinv[5] = K_Rinv(1,2); k_rinv[6] = K_Rinv(2,0); k_rinv[7] = K_Rinv(2,1); k_rinv[8] = K_Rinv(2,2); Mat_<float> T_(T.reshape(0, 3)); t[0] = T_(0,0); t[1] = T_(1,0); t[2] = T_(2,0); }
void ProjectorBase::setCameraParams(const Mat &K, const Mat &R, const Mat &T) { CV_Assert(K.size() == Size(3, 3) && K.type() == CV_32F); CV_Assert(R.size() == Size(3, 3) && R.type() == CV_32F); CV_Assert((T.size() == Size(1, 3) || T.size() == Size(3, 1)) && T.type() == CV_32F); Mat_<float> K_(K); k[0] = K_(0,0); k[1] = K_(0,1); k[2] = K_(0,2); k[3] = K_(1,0); k[4] = K_(1,1); k[5] = K_(1,2); k[6] = K_(2,0); k[7] = K_(2,1); k[8] = K_(2,2); Mat_<float> Rinv = R.t(); rinv[0] = Rinv(0,0); rinv[1] = Rinv(0,1); rinv[2] = Rinv(0,2); rinv[3] = Rinv(1,0); rinv[4] = Rinv(1,1); rinv[5] = Rinv(1,2); rinv[6] = Rinv(2,0); rinv[7] = Rinv(2,1); rinv[8] = Rinv(2,2); Mat_<float> R_Kinv = R * K.inv(); r_kinv[0] = R_Kinv(0,0); r_kinv[1] = R_Kinv(0,1); r_kinv[2] = R_Kinv(0,2); r_kinv[3] = R_Kinv(1,0); r_kinv[4] = R_Kinv(1,1); r_kinv[5] = R_Kinv(1,2); r_kinv[6] = R_Kinv(2,0); r_kinv[7] = R_Kinv(2,1); r_kinv[8] = R_Kinv(2,2); Mat_<float> K_Rinv = K * Rinv; k_rinv[0] = K_Rinv(0,0); k_rinv[1] = K_Rinv(0,1); k_rinv[2] = K_Rinv(0,2); k_rinv[3] = K_Rinv(1,0); k_rinv[4] = K_Rinv(1,1); k_rinv[5] = K_Rinv(1,2); k_rinv[6] = K_Rinv(2,0); k_rinv[7] = K_Rinv(2,1); k_rinv[8] = K_Rinv(2,2); Mat_<float> T_(T.reshape(0, 3)); t[0] = T_(0,0); t[1] = T_(1,0); t[2] = T_(2,0); }