python语言含有丰富的语法规则和简洁实用的表达方式,opencv与python的结合可以做很多事情,opencv2.4.10所带的python实例中有部分程序,阅读实例的同时可以学习到优美的python语法,其中第一个程序_converage如下:
from glob import glob
import cv2
import re
if __name__ == '__main__':
cv2_callable = set(['cv2.'+name for name in dir(cv2) if callable( getattr(cv2, name) )])
found = set()
for fn in glob('*.py'):
print ' --- ', fn
code = open(fn).read()
found |= set(re.findall('cv2?\.\w+', code))
cv2_used = found & cv2_callable
cv2_unused = cv2_callable - cv2_used
with open('unused_api.txt', 'w') as f:
f.write('\n'.join(sorted(cv2_unused)))
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 '\nold (cv) symbols:'
for s in found:
if s.startswith('cv.'):
print s
该程序计算的是API的覆盖范围并且计算了旧版本的opencv函数在所有python_opencv程序中使用的范围。直接运行可以得到如下:
程序解析如下:
1.glob
glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。第9行中for fn in glob('*.py')就是寻找以.py结尾的所有文件。在cmd中使用python可以查看glob模块的使用方法。
glob.glob
返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则