mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.9 KiB
139 lines
4.9 KiB
#!/usr/bin/env python |
|
import cv2 as cv |
|
|
|
from tests_common import NewOpenCVTests |
|
|
|
class stitching_test(NewOpenCVTests): |
|
|
|
def test_simple(self): |
|
|
|
img1 = self.get_sample('stitching/a1.png') |
|
img2 = self.get_sample('stitching/a2.png') |
|
|
|
stitcher = cv.Stitcher.create(cv.Stitcher_PANORAMA) |
|
(_result, pano) = stitcher.stitch((img1, img2)) |
|
|
|
#cv.imshow("pano", pano) |
|
#cv.waitKey() |
|
|
|
self.assertAlmostEqual(pano.shape[0], 685, delta=100, msg="rows: %r" % list(pano.shape)) |
|
self.assertAlmostEqual(pano.shape[1], 1025, delta=100, msg="cols: %r" % list(pano.shape)) |
|
|
|
|
|
class stitching_detail_test(NewOpenCVTests): |
|
|
|
def test_simple(self): |
|
img = self.get_sample('stitching/a1.png') |
|
finder= cv.ORB.create() |
|
imgFea = cv.detail.computeImageFeatures2(finder,img) |
|
self.assertIsNotNone(imgFea) |
|
|
|
# Added Test for PR #21180 |
|
self.assertIsNotNone(imgFea.keypoints) |
|
|
|
matcher = cv.detail_BestOf2NearestMatcher(False, 0.3) |
|
self.assertIsNotNone(matcher) |
|
matcher = cv.detail_AffineBestOf2NearestMatcher(False, False, 0.3) |
|
self.assertIsNotNone(matcher) |
|
matcher = cv.detail_BestOf2NearestRangeMatcher(2, False, 0.3) |
|
self.assertIsNotNone(matcher) |
|
estimator = cv.detail_AffineBasedEstimator() |
|
self.assertIsNotNone(estimator) |
|
estimator = cv.detail_HomographyBasedEstimator() |
|
self.assertIsNotNone(estimator) |
|
|
|
adjuster = cv.detail_BundleAdjusterReproj() |
|
self.assertIsNotNone(adjuster) |
|
adjuster = cv.detail_BundleAdjusterRay() |
|
self.assertIsNotNone(adjuster) |
|
adjuster = cv.detail_BundleAdjusterAffinePartial() |
|
self.assertIsNotNone(adjuster) |
|
adjuster = cv.detail_NoBundleAdjuster() |
|
self.assertIsNotNone(adjuster) |
|
|
|
compensator=cv.detail.ExposureCompensator_createDefault(cv.detail.ExposureCompensator_NO) |
|
self.assertIsNotNone(compensator) |
|
compensator=cv.detail.ExposureCompensator_createDefault(cv.detail.ExposureCompensator_GAIN) |
|
self.assertIsNotNone(compensator) |
|
compensator=cv.detail.ExposureCompensator_createDefault(cv.detail.ExposureCompensator_GAIN_BLOCKS) |
|
self.assertIsNotNone(compensator) |
|
|
|
seam_finder = cv.detail.SeamFinder_createDefault(cv.detail.SeamFinder_NO) |
|
self.assertIsNotNone(seam_finder) |
|
seam_finder = cv.detail.SeamFinder_createDefault(cv.detail.SeamFinder_NO) |
|
self.assertIsNotNone(seam_finder) |
|
seam_finder = cv.detail.SeamFinder_createDefault(cv.detail.SeamFinder_VORONOI_SEAM) |
|
self.assertIsNotNone(seam_finder) |
|
|
|
seam_finder = cv.detail_GraphCutSeamFinder("COST_COLOR") |
|
self.assertIsNotNone(seam_finder) |
|
seam_finder = cv.detail_GraphCutSeamFinder("COST_COLOR_GRAD") |
|
self.assertIsNotNone(seam_finder) |
|
seam_finder = cv.detail_DpSeamFinder("COLOR") |
|
self.assertIsNotNone(seam_finder) |
|
seam_finder = cv.detail_DpSeamFinder("COLOR_GRAD") |
|
self.assertIsNotNone(seam_finder) |
|
|
|
blender = cv.detail.Blender_createDefault(cv.detail.Blender_NO) |
|
self.assertIsNotNone(blender) |
|
blender = cv.detail.Blender_createDefault(cv.detail.Blender_FEATHER) |
|
self.assertIsNotNone(blender) |
|
blender = cv.detail.Blender_createDefault(cv.detail.Blender_MULTI_BAND) |
|
self.assertIsNotNone(blender) |
|
|
|
timelapser = cv.detail.Timelapser_createDefault(cv.detail.Timelapser_AS_IS); |
|
self.assertIsNotNone(timelapser) |
|
timelapser = cv.detail.Timelapser_createDefault(cv.detail.Timelapser_CROP); |
|
self.assertIsNotNone(timelapser) |
|
|
|
|
|
class stitching_compose_panorama_test_no_args(NewOpenCVTests): |
|
|
|
def test_simple(self): |
|
|
|
img1 = self.get_sample('stitching/a1.png') |
|
img2 = self.get_sample('stitching/a2.png') |
|
|
|
stitcher = cv.Stitcher.create(cv.Stitcher_PANORAMA) |
|
|
|
stitcher.estimateTransform((img1, img2)) |
|
|
|
result, _ = stitcher.composePanorama() |
|
|
|
assert result == 0 |
|
|
|
|
|
class stitching_compose_panorama_args(NewOpenCVTests): |
|
|
|
def test_simple(self): |
|
|
|
img1 = self.get_sample('stitching/a1.png') |
|
img2 = self.get_sample('stitching/a2.png') |
|
|
|
stitcher = cv.Stitcher.create(cv.Stitcher_PANORAMA) |
|
|
|
stitcher.estimateTransform((img1, img2)) |
|
result, _ = stitcher.composePanorama((img1, img2)) |
|
|
|
assert result == 0 |
|
|
|
|
|
class stitching_matches_info_test(NewOpenCVTests): |
|
|
|
def test_simple(self): |
|
finder = cv.ORB.create() |
|
img1 = self.get_sample('stitching/a1.png') |
|
img2 = self.get_sample('stitching/a2.png') |
|
|
|
img_feat1 = cv.detail.computeImageFeatures2(finder, img1) |
|
img_feat2 = cv.detail.computeImageFeatures2(finder, img2) |
|
|
|
matcher = cv.detail.BestOf2NearestMatcher_create() |
|
matches_info = matcher.apply(img_feat1, img_feat2) |
|
|
|
self.assertIsNotNone(matches_info.matches) |
|
self.assertIsNotNone(matches_info.inliers_mask) |
|
|
|
|
|
if __name__ == '__main__': |
|
NewOpenCVTests.bootstrap()
|
|
|