import sys
import os
import argparse
+import pickle
try:
import Image, ImageDraw
help="show every step of the computation")
parser.add_argument('-s', '--save', dest='saving', action='store_true',
help="save images instead of displaying them")
+ parser.add_argument('-c', '--cache', dest='l_cache', action='store_true',
+ help="use cached lines")
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
help="report progress")
args = parser.parse_args()
#TODO ask user to try again
return 1
else:
- lines, l1, l2, bounds, hough, im_h = linef.find_lines(image, show_all, do_something, verbose)
+ if args.l_cache:
+ filename = ("saved/cache/" + args.files[0][:-4] + "_" +
+ str(image.size[0]))
+ cache_dir = "/".join(filename.split('/')[:-1])
+ if os.path.exists(filename):
+ lines, l1, l2, bounds, hough = pickle.load(open(filename))
+ print >> sys.stderr, "using cached results"
+ im_h = None
+ else:
+ lines, l1, l2, bounds, hough, im_h = linef.find_lines(image, show_all, do_something, verbose)
+ if not os.path.isdir(cache_dir):
+ os.makedirs(cache_dir)
+ d_file = open(filename, 'wb')
+ pickle.dump((lines, l1, l2, bounds, hough), d_file)
+ d_file.close()
+ else:
+ lines, l1, l2, bounds, hough, im_h = linef.find_lines(image, show_all, do_something, verbose)
+
grid, lines = gridf.find(lines, image.size, l1, l2, bounds, hough,
do_something, im_h)
if show_all:
draw = ImageDraw.Draw(im_g)
for l in grid[0] + grid[1]:
draw.line(l, fill=(64, 255, 64), width=1)
- do_something(im_g)
+ do_something(im_g, "grid", name="grid")
board = intrsc.board(image, lines, show_all, do_something)
self.saving_dir = saving_dir
self.saving_num = 0
- def save(self, image, title=''):
- filename = self.saving_dir + "{0:0>2}".format(self.saving_num) + '.jpg'
+ def save(self, image, title='', name=None):
+ if name:
+ filename = self.saving_dir + name + '.jpg'
+ else:
+ filename = self.saving_dir + "{0:0>2}".format(self.saving_num) + '.jpg'
+ self.saving_num += 1
if not os.path.isdir(self.saving_dir):
os.makedirs(self.saving_dir)
image.save(filename, 'JPEG')
- self.saving_num += 1
if __name__ == '__main__':
try: