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.
36 lines
1.0 KiB
36 lines
1.0 KiB
#!/usr/bin/env python |
|
|
|
''' |
|
Watershed segmentation test |
|
''' |
|
|
|
# Python 2/3 compatibility |
|
from __future__ import print_function |
|
|
|
import numpy as np |
|
import cv2 |
|
|
|
from tests_common import NewOpenCVTests |
|
|
|
class watershed_test(NewOpenCVTests): |
|
def test_watershed(self): |
|
|
|
img = self.get_sample('cv/inpaint/orig.png') |
|
markers = self.get_sample('cv/watershed/wshed_exp.png', 0) |
|
refSegments = self.get_sample('cv/watershed/wshed_segments.png') |
|
|
|
if img is None or markers is None: |
|
self.assertEqual(0, 1, 'Missing test data') |
|
|
|
colors = np.int32( list(np.ndindex(3, 3, 3)) ) * 122 |
|
cv2.watershed(img, np.int32(markers)) |
|
segments = colors[np.maximum(markers, 0)] |
|
|
|
if refSegments is None: |
|
refSegments = segments.copy() |
|
cv2.imwrite(self.extraTestDataPath + '/cv/watershed/wshed_segments.png', refSegments) |
|
|
|
self.assertLess(cv2.norm(segments - refSegments, cv2.NORM_L1) / 255.0, 50) |
|
|
|
if __name__ == '__main__': |
|
NewOpenCVTests.bootstrap()
|
|
|