test_stitching.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #!/usr/bin/env python
  2. import cv2 as cv
  3. from tests_common import NewOpenCVTests
  4. class stitching_test(NewOpenCVTests):
  5. def test_simple(self):
  6. img1 = self.get_sample('stitching/a1.png')
  7. img2 = self.get_sample('stitching/a2.png')
  8. stitcher = cv.Stitcher.create(cv.Stitcher_PANORAMA)
  9. (_result, pano) = stitcher.stitch((img1, img2))
  10. #cv.imshow("pano", pano)
  11. #cv.waitKey()
  12. self.assertAlmostEqual(pano.shape[0], 685, delta=100, msg="rows: %r" % list(pano.shape))
  13. self.assertAlmostEqual(pano.shape[1], 1025, delta=100, msg="cols: %r" % list(pano.shape))
  14. class stitching_detail_test(NewOpenCVTests):
  15. def test_simple(self):
  16. img = self.get_sample('stitching/a1.png')
  17. finder= cv.ORB.create()
  18. imgFea = cv.detail.computeImageFeatures2(finder,img)
  19. self.assertIsNotNone(imgFea)
  20. # Added Test for PR #21180
  21. self.assertIsNotNone(imgFea.keypoints)
  22. matcher = cv.detail_BestOf2NearestMatcher(False, 0.3)
  23. self.assertIsNotNone(matcher)
  24. matcher = cv.detail_AffineBestOf2NearestMatcher(False, False, 0.3)
  25. self.assertIsNotNone(matcher)
  26. matcher = cv.detail_BestOf2NearestRangeMatcher(2, False, 0.3)
  27. self.assertIsNotNone(matcher)
  28. estimator = cv.detail_AffineBasedEstimator()
  29. self.assertIsNotNone(estimator)
  30. estimator = cv.detail_HomographyBasedEstimator()
  31. self.assertIsNotNone(estimator)
  32. adjuster = cv.detail_BundleAdjusterReproj()
  33. self.assertIsNotNone(adjuster)
  34. adjuster = cv.detail_BundleAdjusterRay()
  35. self.assertIsNotNone(adjuster)
  36. adjuster = cv.detail_BundleAdjusterAffinePartial()
  37. self.assertIsNotNone(adjuster)
  38. adjuster = cv.detail_NoBundleAdjuster()
  39. self.assertIsNotNone(adjuster)
  40. compensator=cv.detail.ExposureCompensator_createDefault(cv.detail.ExposureCompensator_NO)
  41. self.assertIsNotNone(compensator)
  42. compensator=cv.detail.ExposureCompensator_createDefault(cv.detail.ExposureCompensator_GAIN)
  43. self.assertIsNotNone(compensator)
  44. compensator=cv.detail.ExposureCompensator_createDefault(cv.detail.ExposureCompensator_GAIN_BLOCKS)
  45. self.assertIsNotNone(compensator)
  46. seam_finder = cv.detail.SeamFinder_createDefault(cv.detail.SeamFinder_NO)
  47. self.assertIsNotNone(seam_finder)
  48. seam_finder = cv.detail.SeamFinder_createDefault(cv.detail.SeamFinder_NO)
  49. self.assertIsNotNone(seam_finder)
  50. seam_finder = cv.detail.SeamFinder_createDefault(cv.detail.SeamFinder_VORONOI_SEAM)
  51. self.assertIsNotNone(seam_finder)
  52. seam_finder = cv.detail_GraphCutSeamFinder("COST_COLOR")
  53. self.assertIsNotNone(seam_finder)
  54. seam_finder = cv.detail_GraphCutSeamFinder("COST_COLOR_GRAD")
  55. self.assertIsNotNone(seam_finder)
  56. seam_finder = cv.detail_DpSeamFinder("COLOR")
  57. self.assertIsNotNone(seam_finder)
  58. seam_finder = cv.detail_DpSeamFinder("COLOR_GRAD")
  59. self.assertIsNotNone(seam_finder)
  60. blender = cv.detail.Blender_createDefault(cv.detail.Blender_NO)
  61. self.assertIsNotNone(blender)
  62. blender = cv.detail.Blender_createDefault(cv.detail.Blender_FEATHER)
  63. self.assertIsNotNone(blender)
  64. blender = cv.detail.Blender_createDefault(cv.detail.Blender_MULTI_BAND)
  65. self.assertIsNotNone(blender)
  66. timelapser = cv.detail.Timelapser_createDefault(cv.detail.Timelapser_AS_IS);
  67. self.assertIsNotNone(timelapser)
  68. timelapser = cv.detail.Timelapser_createDefault(cv.detail.Timelapser_CROP);
  69. self.assertIsNotNone(timelapser)
  70. class stitching_compose_panorama_test_no_args(NewOpenCVTests):
  71. def test_simple(self):
  72. img1 = self.get_sample('stitching/a1.png')
  73. img2 = self.get_sample('stitching/a2.png')
  74. stitcher = cv.Stitcher.create(cv.Stitcher_PANORAMA)
  75. stitcher.estimateTransform((img1, img2))
  76. result, _ = stitcher.composePanorama()
  77. assert result == 0
  78. class stitching_compose_panorama_args(NewOpenCVTests):
  79. def test_simple(self):
  80. img1 = self.get_sample('stitching/a1.png')
  81. img2 = self.get_sample('stitching/a2.png')
  82. stitcher = cv.Stitcher.create(cv.Stitcher_PANORAMA)
  83. stitcher.estimateTransform((img1, img2))
  84. result, _ = stitcher.composePanorama((img1, img2))
  85. assert result == 0
  86. if __name__ == '__main__':
  87. NewOpenCVTests.bootstrap()