| """This a test for sequential stitcher method""" | |
| from pathlib import Path | |
| import cv2 | |
| from panaroma_stitcher.sequential_stitcher import SequentialStitcher | |
| def test_detect_and_describe() -> None: | |
| """Test for detecting and describing keypoints in KeypointStitcher""" | |
| stitcher = SequentialStitcher(Path("./test_data/mountain"), feature_detector="sift") | |
| detector = stitcher.detect_and_describe() | |
| assert isinstance(detector, cv2.SIFT) | |
| stitcher = SequentialStitcher(Path("./test_data/mountain"), feature_detector="orb") | |
| detector = stitcher.detect_and_describe() | |
| assert isinstance(detector, cv2.ORB) | |
| stitcher = SequentialStitcher( | |
| Path("./test_data/mountain"), feature_detector="brisk" | |
| ) | |
| detector = stitcher.detect_and_describe() | |
| assert isinstance(detector, cv2.BRISK) | |
| def test_matcher() -> None: | |
| """Test for matching keypoints in KeypointStitcher""" | |
| stitcher = SequentialStitcher( | |
| Path("./test_data/mountain"), feature_detector="sift", matcher_type="bf" | |
| ) | |
| matcher = stitcher.matcher() | |
| assert isinstance(matcher, cv2.BFMatcher) | |
| stitcher = SequentialStitcher( | |
| Path("./test_data/mountain"), feature_detector="sift", matcher_type="flann" | |
| ) | |
| matcher = stitcher.matcher() | |
| assert isinstance(matcher, cv2.FlannBasedMatcher) | |
| def test_stitcher(tmp_path: Path) -> None: | |
| """Test for stitcher method in KeypointStitcher""" | |
| stitcher = SequentialStitcher( | |
| Path("./test_data/mountain"), | |
| feature_detector="sift", | |
| matcher_type="bf", | |
| number_feature=500, | |
| ) | |
| stitcher.stitcher(str(tmp_path / "test_result.png"), True) | |
| assert Path(tmp_path / "test_result.png").exists() | |