Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/python/test/test_watershed.py
16337 views
1
#!/usr/bin/env python
2
3
'''
4
Watershed segmentation test
5
'''
6
7
# Python 2/3 compatibility
8
from __future__ import print_function
9
10
import numpy as np
11
import cv2 as cv
12
13
from tests_common import NewOpenCVTests
14
15
class watershed_test(NewOpenCVTests):
16
def test_watershed(self):
17
18
img = self.get_sample('cv/inpaint/orig.png')
19
markers = self.get_sample('cv/watershed/wshed_exp.png', 0)
20
refSegments = self.get_sample('cv/watershed/wshed_segments.png')
21
22
if img is None or markers is None:
23
self.assertEqual(0, 1, 'Missing test data')
24
25
colors = np.int32( list(np.ndindex(3, 3, 3)) ) * 122
26
cv.watershed(img, np.int32(markers))
27
segments = colors[np.maximum(markers, 0)]
28
29
if refSegments is None:
30
refSegments = segments.copy()
31
cv.imwrite(self.extraTestDataPath + '/cv/watershed/wshed_segments.png', refSegments)
32
33
self.assertLess(cv.norm(segments - refSegments, cv.NORM_L1) / 255.0, 50)
34
35
if __name__ == '__main__':
36
NewOpenCVTests.bootstrap()
37
38