\r
\r
if __name__ == '__main__':\r
- import argparse\r
+ import getopt\r
+ import sys\r
\r
models = [RTrees, KNearest, Boost, SVM] # MLP, NBayes\r
models = dict( [(cls.__name__.lower(), cls) for cls in models] )\r
+\r
+ print 'USAGE: letter_recog.py [--model <model>] [--data <data fn>] [--load <model fn>] [--save <model fn>]'\r
+ print 'Models: ', ', '.join(models)\r
+ print\r
\r
- parser = argparse.ArgumentParser()\r
- parser.add_argument('-model', default='rtrees', choices=models.keys())\r
- parser.add_argument('-data', nargs=1, default='../cpp/letter-recognition.data')\r
- parser.add_argument('-load', nargs=1)\r
- parser.add_argument('-save', nargs=1)\r
- args = parser.parse_args()\r
-\r
- print 'loading data %s ...' % args.data\r
- samples, responses = load_base(args.data)\r
- Model = models[args.model]\r
+ args, dummy = getopt.getopt(sys.argv[1:], '', ['model=', 'data=', 'load=', 'save='])\r
+ args = dict(args)\r
+ args.setdefault('--model', 'rtrees')\r
+ args.setdefault('--data', '../cpp/letter-recognition.data')\r
+\r
+ print 'loading data %s ...' % args['--data']\r
+ samples, responses = load_base(args['--data'])\r
+ Model = models[args['--model']]\r
model = Model()\r
\r
train_n = int(len(samples)*model.train_ratio)\r
- if args.load is None:\r
- print 'training %s ...' % Model.__name__\r
- model.train(samples[:train_n], responses[:train_n])\r
- else:\r
- fn = args.load[0]\r
+ if '--load' in args:\r
+ fn = args['--load']\r
print 'loading model from %s ...' % fn\r
model.load(fn)\r
+ else:\r
+ print 'training %s ...' % Model.__name__\r
+ model.train(samples[:train_n], responses[:train_n])\r
\r
print 'testing...'\r
train_rate = np.mean(model.predict(samples[:train_n]) == responses[:train_n])\r
\r
print 'train rate: %f test rate: %f' % (train_rate*100, test_rate*100)\r
\r
- if args.save is not None:\r
- fn = args.save[0]\r
+ if '--save' in args:\r
+ fn = args['--save']\r
print 'saving model to %s ...' % fn\r
model.save(fn)\r
return cv2.VideoCapture(source)\r
\r
\r
+presets = dict(\r
+ lena = 'synth:bg=../cpp/lena.jpg:noise=0.1'\r
+)\r
+\r
if __name__ == '__main__':\r
import sys\r
- import argparse\r
- \r
- parser = argparse.ArgumentParser()\r
- parser.add_argument('sources', nargs='*', default=['synth:bg=../cpp/lena.jpg:noise=0.1'])\r
- parser.add_argument('-shotdir', nargs=1, default='.')\r
- args = parser.parse_args()\r
- print args\r
+ import getopt\r
+\r
+ print 'USAGE: video.py [--shotdir <dir>] [source0] [source1] ...'\r
+ print "source: '<int>' or '<filename>' or 'synth:<params>'"\r
+ print\r
+\r
+ args, sources = getopt.getopt(sys.argv[1:], '', 'shotdir=')\r
+ args = dict(args)\r
+ shotdir = args.get('--shotdir', '.')\r
+ if len(sources) == 0:\r
+ sources = [ presets['lena'] ]\r
\r
print 'Press SPACE to save current frame'\r
\r
- caps = map(create_capture, args.sources)\r
+ caps = map(create_capture, sources)\r
shot_idx = 0\r
while True:\r
imgs = []\r
break\r
if ch == ord(' '):\r
for i, img in enumerate(imgs):\r
- fn = '%s/shot_%d_%03d.bmp' % (args.shotdir[0], i, shot_idx)\r
+ fn = '%s/shot_%d_%03d.bmp' % (shotdir, i, shot_idx)\r
cv2.imwrite(fn, img)\r
print fn, 'saved'\r
shot_idx += 1\r