def test_get(self): f2f_d = F2FHomography(HomographyD.random(), 0, 5) f2f_f = F2FHomography(HomographyF.random(), 10, 0) mat_d = f2f_d.homography.matrix() mat_f = f2f_f.homography.matrix() self.check_each_element_equal(f2f_d, mat_d, prec=15) self.check_each_element_equal(f2f_f, mat_f)
def test_init_from_homography(self): hd = HomographyD() hf = HomographyF() f2f_d = F2FHomography(hd, 0, 5) f2f_f = F2FHomography(hf, 0, 5) self.check_properties(f2f_d, hd.matrix(), 0, 5, prec=15) self.check_properties(f2f_f, hf.matrix(), 0, 5) hd = HomographyD.random() hf = HomographyF.random() f2f_d = F2FHomography(hd, 5, 0) f2f_f = F2FHomography(hf, 5, 0) self.check_properties(f2f_d, hd.matrix(), 5, 0, prec=15) self.check_properties(f2f_f, hf.matrix(), 5, 0)
def test_mul(self): # Doubles f2f_d1 = F2FHomography(HomographyD.random(), 0, 5) f2f_d2 = F2FHomography(HomographyD.random(), 10, 0) mat1 = f2f_d1.homography.matrix() mat2 = f2f_d2.homography.matrix() self.check_properties(f2f_d1 * f2f_d2, np.dot(mat1, mat2), 10, 5, prec=15) # Floats f2f_f1 = F2FHomography(HomographyF.random(), 0, 5) f2f_f2 = F2FHomography(HomographyF.random(), 10, 0) mat1 = f2f_f1.homography.matrix() mat2 = f2f_f2.homography.matrix() self.check_properties(f2f_f1 * f2f_f2, np.dot(mat1, mat2), 10, 5)
def test_mul_different_types(self): f2f_d = F2FHomography(HomographyD.random(), 0, 5) f2f_f = F2FHomography(HomographyF.random(), 10, 0) mat_d = f2f_d.homography.matrix() mat_f = f2f_f.homography.matrix() self.check_properties(f2f_d * f2f_f, np.dot(mat_d, mat_f), 10, 5, prec=15)
def test_to_str(self): f2f_d = F2FHomography(HomographyD.random(), 0, 5) f2f_f = F2FHomography(HomographyF.random(), 10, 0) print("\nPrinting double f2f_homography") self.print_hom_and_mat(f2f_d) self.check_str(f2f_d) print("\nPrinting float f2f_homography") self.print_hom_and_mat(f2f_f) self.check_str(f2f_f)
def test_mul_ident(self): # Identity * identity = identity ident = F2FHomography(10) self.check_properties(ident * ident, np.identity(3), 10, 10, prec=15) # Identity * F = F f2f_d = F2FHomography(HomographyD.random(), 0, 10) f2f_f = F2FHomography(HomographyF.random(), 0, 10) mat_d = f2f_d.homography.matrix() mat_f = f2f_f.homography.matrix() self.check_properties(ident * f2f_d, mat_d, 0, 10, prec=15) self.check_properties(ident * f2f_f, mat_f, 0, 10)
def test_inverse(self): # Test inverse for identity matrix f2f = F2FHomography(10) self.check_properties(f2f.inverse(), np.identity(3), 10, 10, prec=15) h_d = HomographyD.random() h_f = HomographyF.random() f2f_d = F2FHomography(h_d, 0, 5) f2f_f = F2FHomography(h_f, 0, 5) self.check_properties(f2f_d.inverse(), h_d.inverse().matrix(), 5, 0, prec=15) self.check_properties(f2f_f.inverse(), h_f.inverse().matrix(), 5, 0)
def test_copy_construct(self): # Copy from default constructor f2f = F2FHomography(10) f2f_copy = F2FHomography(f2f) self.check_properties(f2f_copy, f2f.homography.matrix(), 10, 10, prec=15) # Copy from specified matrix for doubles and floats f2f_d = F2FHomography(HomographyD.random(), 0, 5) f2f_f = F2FHomography(HomographyF.random(), 0, 5) f2f_d_copy = F2FHomography(f2f_d) f2f_f_copy = F2FHomography(f2f_f) self.check_properties(f2f_d_copy, f2f_d.homography.matrix(), 0, 5, prec=15) self.check_properties(f2f_f_copy, f2f_f.homography.matrix(), 0, 5)