added _doc.py -- doc-string ckecking utility

added some sample description
This commit is contained in:
Alexander Mordvintesv 2012-08-22 16:42:19 +03:00
parent 122f59560c
commit d9185ec21b
9 changed files with 95 additions and 36 deletions

View File

@ -1,24 +1,29 @@
'''
Utility for measuring python opencv API coverage by samples.
'''
from glob import glob from glob import glob
import cv2 import cv2
import re import re
cv2_callable = set(['cv2.'+name for name in dir(cv2) if callable( getattr(cv2, name) )]) if __name__ == '__main__':
cv2_callable = set(['cv2.'+name for name in dir(cv2) if callable( getattr(cv2, name) )])
found = set() found = set()
for fn in glob('*.py'): for fn in glob('*.py'):
print ' --- ', fn print ' --- ', fn
code = open(fn).read() code = open(fn).read()
found |= set(re.findall('cv2?\.\w+', code)) found |= set(re.findall('cv2?\.\w+', code))
cv2_used = found & cv2_callable cv2_used = found & cv2_callable
cv2_unused = cv2_callable - cv2_used cv2_unused = cv2_callable - cv2_used
with open('unused_api.txt', 'w') as f: with open('unused_api.txt', 'w') as f:
f.write('\n'.join(sorted(cv2_unused))) f.write('\n'.join(sorted(cv2_unused)))
r = 1.0 * len(cv2_used) / len(cv2_callable) r = 1.0 * len(cv2_used) / len(cv2_callable)
print '\ncv2 api coverage: %d / %d (%.1f%%)' % ( len(cv2_used), len(cv2_callable), r*100 ) print '\ncv2 api coverage: %d / %d (%.1f%%)' % ( len(cv2_used), len(cv2_callable), r*100 )
print '\nold (cv) symbols:' print '\nold (cv) symbols:'
for s in found: for s in found:
if s.startswith('cv.'): if s.startswith('cv.'):
print s print s

14
samples/python2/_doc.py Normal file
View File

@ -0,0 +1,14 @@
'''
Scans current directory for *.py files and reports
ones with missing __doc__ string.
'''
from glob import glob
if __name__ == '__main__':
print '--- undocumented files:'
for fn in glob('*.py'):
loc = {}
execfile(fn, loc)
if '__doc__' not in loc:
print fn

View File

@ -1,3 +1,7 @@
'''
This module contais some common routines used by other samples.
'''
import numpy as np import numpy as np
import cv2 import cv2
import os import os

View File

@ -1,3 +1,7 @@
'''
Sample-launcher application.
'''
import Tkinter as tk import Tkinter as tk
from ScrolledText import ScrolledText from ScrolledText import ScrolledText
from glob import glob from glob import glob

View File

@ -1,20 +1,25 @@
import numpy as np '''
import cv2 Distance transform sample.
import cv2.cv as cv
from common import make_cmap
help_message = '''USAGE: distrans.py [<image>] Usage:
distrans.py [<image>]
Keys: Keys:
ESC - exit ESC - exit
v - toggle voronoi mode v - toggle voronoi mode
''' '''
import numpy as np
import cv2
import cv2.cv as cv
from common import make_cmap
if __name__ == '__main__': if __name__ == '__main__':
import sys import sys
try: fn = sys.argv[1] try: fn = sys.argv[1]
except: fn = '../cpp/fruits.jpg' except: fn = '../cpp/fruits.jpg'
print help_message print __doc__
img = cv2.imread(fn, 0) img = cv2.imread(fn, 0)
cm = make_cmap('jet') cm = make_cmap('jet')

View File

@ -1,9 +1,10 @@
import numpy as np '''
import cv2 Floodfill sample.
help_message = '''USAGE: floodfill.py [<image>] Usage:
floodfill.py [<image>]
Click on the image to set seed point Click on the image to set seed point
Keys: Keys:
f - toggle floating range f - toggle floating range
@ -11,11 +12,14 @@ Keys:
ESC - exit ESC - exit
''' '''
import numpy as np
import cv2
if __name__ == '__main__': if __name__ == '__main__':
import sys import sys
try: fn = sys.argv[1] try: fn = sys.argv[1]
except: fn = '../cpp/fruits.jpg' except: fn = '../cpp/fruits.jpg'
print help_message print __doc__
img = cv2.imread(fn, True) img = cv2.imread(fn, True)
h, w = img.shape[:2] h, w = img.shape[:2]

View File

@ -1,8 +1,11 @@
import numpy as np '''
import cv2 Inpainting sample.
from common import Sketcher
help_message = '''USAGE: inpaint.py [<image>] Inpainting repairs damage to images by floodfilling
the damage with surrounding image areas.
Usage:
inpaint.py [<image>]
Keys: Keys:
SPACE - inpaint SPACE - inpaint
@ -10,11 +13,15 @@ Keys:
ESC - exit ESC - exit
''' '''
import numpy as np
import cv2
from common import Sketcher
if __name__ == '__main__': if __name__ == '__main__':
import sys import sys
try: fn = sys.argv[1] try: fn = sys.argv[1]
except: fn = '../cpp/fruits.jpg' except: fn = '../cpp/fruits.jpg'
print help_message print __doc__
img = cv2.imread(fn) img = cv2.imread(fn)
img_mark = img.copy() img_mark = img.copy()

View File

@ -1,8 +1,22 @@
'''
Morphology operations.
Usage:
morphology.py [<image>]
Keys:
1 - change operation
2 - change structure element shape
ESC - exit
'''
import numpy as np import numpy as np
import cv2 import cv2
if __name__ == '__main__': if __name__ == '__main__':
print __doc__
import sys import sys
from itertools import cycle from itertools import cycle
from common import draw_str from common import draw_str
@ -44,10 +58,6 @@ if __name__ == '__main__':
cv2.createTrackbar('op/size', 'morphology', 12, 20, update) cv2.createTrackbar('op/size', 'morphology', 12, 20, update)
cv2.createTrackbar('iters', 'morphology', 1, 10, update) cv2.createTrackbar('iters', 'morphology', 1, 10, update)
update() update()
print "Controls:"
print " 1 - change operation"
print " 2 - change structure element shape"
print
while True: while True:
ch = 0xFF & cv2.waitKey() ch = 0xFF & cv2.waitKey()
if ch == 27: if ch == 27:

View File

@ -1,3 +1,9 @@
'''
Simple "Square Detector" program.
Loads several images sequentially and tries to find squares in each image.
'''
import numpy as np import numpy as np
import cv2 import cv2