diff --git a/conftest.py b/conftest.py new file mode 100644 index 0000000..e69de29 diff --git a/pipeline_b/star_detector.py b/pipeline_b/star_detector.py index e69de29..0887deb 100644 --- a/pipeline_b/star_detector.py +++ b/pipeline_b/star_detector.py @@ -0,0 +1,29 @@ +import numpy as np # Je le laisse pour plus tard +import cv2 +import os + +def reading_picture(path): + if not os.path.exists(path): + raise FileNotFoundError(f"{path} n'existe pas.") + pic = cv2.imread(path, cv2.IMREAD_GRAYSCALE) + if pic is None: + raise ValueError(f"{path} est corrompu ou n'est pas une image valide.") + return pic + +def blob_detector(picture): + params = cv2.SimpleBlobDetector_Params() + params.minThreshold = 10 + params.maxThreshold = 200 + params.filterByArea = True + params.minArea = 4 + params.filterByCircularity = True + params.minCircularity = 0.1 + params.filterByConvexity = True + params.minConvexity = 0.87 + params.filterByInertia = True + params.minInertiaRatio = 0.01 + # TODO: valeurs provisoires, à recalibrer avec de vraies images de test cette semaine. + detector = cv2.SimpleBlobDetector.create(params) + stars = detector.detect(picture) + result = [star.pt for star in stars] + return result \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 5a99242..f1105af 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/tests/tests_pipeline_b.py b/tests/tests_pipeline_b.py index e69de29..b37b45c 100644 --- a/tests/tests_pipeline_b.py +++ b/tests/tests_pipeline_b.py @@ -0,0 +1,29 @@ +import pytest +import cv2 +import numpy as np +from pipeline_b import star_detector + +def test_file_exists_and_is_an_image(tmp_path): + file = tmp_path / "image.jpg" + tableau_image = np.random.randint(0, 256, (64, 64), dtype=np.uint8) + cv2.imwrite(str(file), tableau_image) + assert isinstance(star_detector.reading_picture(file), np.ndarray) + +def test_file_exists_not_an_image(tmp_path): + file = tmp_path / "file.txt" + file.write_text("Not an image.") + with pytest.raises(ValueError): + star_detector.reading_picture(file) + +def test_file_does_not_exists(tmp_path): + with pytest.raises(FileNotFoundError): + star_detector.reading_picture(tmp_path/"do_I_exist.txt") + +@pytest.mark.skip(reason="A corriger : égalité stricte sur flottants, canall couleur incohérent, détour disque inutile") +def test_blob_detector_actually_detects_a_blob(tmp_path): + file = tmp_path / "image.jpg" + tableau_image = np.full((64,64), 0, dtype=np.uint8) + cv2.imwrite(str(file), tableau_image) + src = cv2.imread(file) + cv2.circle(src, center=(23, 31), radius = 5, color= (255, 255, 255), thickness=-1) + assert star_detector.blob_detector(src) == [(23, 31)] \ No newline at end of file