diff --git a/05_build_samplesfile.py b/05_build_samplesfile.py new file mode 100644 index 0000000..8bbca8b --- /dev/null +++ b/05_build_samplesfile.py @@ -0,0 +1,44 @@ +from utils.geo import get_rectangle +from utils.geo import WAYS_DATA_FILENAME +import json +import os + +# We need the elements +print 'Loading %s...' % WAYS_DATA_FILENAME +with open(WAYS_DATA_FILENAME, 'r') as f: + ways_data = json.load(f) + +samples_data = {} + +image_files = [f for f in os.listdir('satellite/gray') if f.endswith('.png')] +for image_file in image_files: + print 'Processing %s...' % image_file + + # Find the category + sport = image_file[image_file.find('_')+1:image_file.rfind('_')] + if sport not in samples_data: + samples_data[sport] = [] + + # The ID is between the last underscore and the extension dot + # For example: pitch_volleyball_268478401.png -> 268478401 + way_id = image_file[image_file.rfind('_') + 1:image_file.find('.')] + bounds = ways_data[way_id]['bounds'] + + # Add a rectangle with the feature + x, y, w, h = get_rectangle(bounds=bounds) + if w <= 25 or h <= 25: + print 'Pic not added' + continue + if x <= 0 or y <= 0 or w <= 0 or h <= 0: + print 'Pic not added' + continue + entry = 'satellite/gray/%s\t1\t%d\t%d\t%d\t%d\n' % (image_file, x, y, w, h) + samples_data[sport].append(entry) + +for sport in samples_data.keys(): + datafile = 'info_%s.dat' % sport + print 'Saving data file: %s' % datafile + with open(datafile, 'w') as f: + print len(samples_data[sport]) + for entry in samples_data[sport]: + f.write(entry) diff --git a/05_draw_bbox.py b/05_draw_bbox.py index 6adc0ca..7569ba0 100644 --- a/05_draw_bbox.py +++ b/05_draw_bbox.py @@ -3,74 +3,38 @@ will use this box to better train our ML algo. ''' +from utils.geo import get_rectangle from utils.geo import WAYS_DATA_FILENAME import cv2 import json -import math import os -image_width = 1280 -image_height = 1280 - -def get_rectangle(bounds): - # This converts a latitude delta into an image delta. For USA, at zoom - # level 19, we know that we have 0.21 meters/pixel. So, an image is showing - # about 1280 pixels * 0.21 meters/pixel = 268.8 meters. - # On the other hand we know that at the same angle, a degress in latlon is: - # https://en.wikipedia.org/wiki/Latitude - # latitude = 111,132 m - # longitude = 78,847 m - # Finally, we add 5% to make sure the feature is contained within the - # rectangle (from what we see, the bbox are tight around the feature) - latitude_factor = 1.05 * 111132.0 / 0.21 - longitude_factor = 1.05 * 78847.0 / 0.21 - - # Feature size - feature_width = longitude_factor * math.fabs(bounds[1] - bounds[3]) - feature_height = latitude_factor * math.fabs(bounds[0] - bounds[2]) - if feature_width > image_width or feature_height > image_height: - print '** Warning ** The feature is bigger than the image.' - - # CV params (int required) - x = int((image_width / 2) - (feature_width / 2)) - y = int((image_height / 2) - (feature_height / 2)) - w = int(feature_width) - h = int(feature_height) - if w <= 25 or h <= 25: - print '** Warning ** This image has very narrow bounds.' - print bounds - print x, y, w, h - if x == 0 or y == 0 or w == 0 or h == 0: - print '** Warning ** There is something wrong with this image bounds.' - print bounds - print x, y, w, h - return x, y, w, h - # We need the elements -print 'Loading %s...' % WAYS_DATA_FILENAME -with open(WAYS_DATA_FILENAME, 'r') as f: - ways_data = json.load(f) +# print 'Loading %s...' % WAYS_DATA_FILENAME +# with open(WAYS_DATA_FILENAME, 'r') as f: +# ways_data = json.load(f) image_files = [f for f in os.listdir('satellite') if f.endswith('.png')] +print len(image_files) for image_file in image_files: print 'Processing %s...' % image_file # The ID is between the last underscore and the extension dot # For example: pitch_volleyball_268478401.png -> 268478401 - way_id = image_file[image_file.rfind('_') + 1:image_file.find('.')] - bounds = ways_data[way_id]['bounds'] + # way_id = image_file[image_file.rfind('_') + 1:image_file.find('.')] + # bounds = ways_data[way_id]['bounds'] # Add a rectangle with the feature - x, y, w, h = get_rectangle(bounds=bounds) - img = cv2.imread(os.path.join('satellite', image_file)) - cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) - cv2.imwrite(os.path.join('satellite/rectangle', image_file), img) + # x, y, w, h = get_rectangle(bounds=bounds) + # img = cv2.imread(os.path.join('satellite', image_file)) + # cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) + # cv2.imwrite(os.path.join('satellite/rectangle', image_file), img) + + # To show the image + # cv2.imshow('img',img) + # cv2.waitKey(0) + # cv2.destroyAllWindows() # Generate a grayscale version img_gray = cv2.imread(os.path.join('satellite', image_file), 0) cv2.imwrite(os.path.join('satellite/gray', image_file), img_gray) - -# To show the image -# cv2.imshow('img',img) -# cv2.waitKey(0) -# cv2.destroyAllWindows() diff --git a/07_fit_min_neighbors.py b/07_fit_min_neighbors.py new file mode 100644 index 0000000..aeb1b05 --- /dev/null +++ b/07_fit_min_neighbors.py @@ -0,0 +1,62 @@ +from __future__ import division +import csv +import cv2 +import numpy as np +import os + +tennis_cascade_files = [ + 'output/cascade-default.xml', + 'output/cascade-4000-2000.xml', + 'output/cascade-6000-3000.xml', + 'output/cascade-8000-4000.xml'] + +positive_files = [os.path.join('satellite/fit', f) \ + for f in os.listdir('satellite/fit') if f.endswith('.png')] + +negative_files = [os.path.join('satellite/fit/negative', f) \ + for f in os.listdir('satellite/fit/negative') if f.endswith('.png')] + +def get_total_pitches(tennis_cascade, filename, min_neighbors): + img = cv2.imread(filename, 0) + pitches = tennis_cascade.detectMultiScale( + img, minNeighbors=min_neighbors) + return len(pitches) + +for tennis_cascade_file in tennis_cascade_files: + print tennis_cascade_file + tennis_cascade = cv2.CascadeClassifier(tennis_cascade_file) + + # Open + positive_f = open(tennis_cascade[:-4] + '_positive.csv', 'w') + negative_f = open(tennis_cascade[:-4] + '_negative.csv', 'w') + positive_writer = csv.writer(positive_f) + negative_writer = csv.writer(negative_f) + + for min_neighbors in range(0, 501, 10): + print min_neighbors + + # Pos + total_set = 0 + for positive_file in positive_files: + total_pitches = get_total_pitches( + tennis_cascade=tennis_cascade, + filename=positive_file, + min_neighbors=min_neighbors) + total_set += total_pitches + total_average = total_set / len(positive_files) + positive_writer.writerow([total_average, min_neighbors]) + + # Neg + total_set = 0 + for negative_file in negative_files: + total_pitches = get_total_pitches( + tennis_cascade=tennis_cascade, + filename=negative_file, + min_neighbors=min_neighbors) + total_set += total_pitches + total_average = total_set / len(negative_files) + negative_writer.writerow([total_average, min_neighbors]) + + # Close + positive_f.close() + negative_f.close() diff --git a/Makefile b/Makefile index d09658b..29bad9a 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,8 @@ step4: python 04_download_satellite.py --sport volleyball --count 10 python 04_download_satellite.py --sport multi --count 10 python 04_download_satellite.py --sport softball --count 10 + # mv satellite/*png satellite/training/ + # mv satellite/*png satellite/testing/ step5: # Draw the bbox on the test files @@ -33,3 +35,13 @@ step5: step6: # Get some random images python 06_get_negatives.py --count 25 + find satellite/negative -type f > negative.txt + +createsamples: + opencv_createsamples -info info_baseball.dat -num 99 -vec info_baseball.vec + opencv_createsamples -info info_basketball.dat -num 100 -vec info_basketball.vec + opencv_createsamples -info info_tennis.dat -num 9998 -vec info_tennis.vec + opencv_traincascade -data output -vec info_baseball.vec -bg negative.txt -numPos 99 -numNeg 100 + opencv_traincascade -data output -vec info_basketball.vec -bg negative.txt -numPos 100 -numNeg 100 + opencv_traincascade -data output -vec info_tennis.vec -bg negative.txt -numPos 9998 -numNeg 5000 + diff --git a/detector.py b/detector.py new file mode 100644 index 0000000..74708fc --- /dev/null +++ b/detector.py @@ -0,0 +1,58 @@ +import numpy as np +import cv2 + +baseball_cascade = cv2.CascadeClassifier('baseball.xml') +basketball_cascade = cv2.CascadeClassifier('basketball.xml') +tennis_cascade = cv2.CascadeClassifier('tennis.xml') + +# testfile = 'satellite/training/pitch_baseball_220727025.png' +# testfile = 'satellite/training/pitch_baseball_222703638.png' +# testfile = 'satellite/training/pitch_baseball_223914194.png' +# testfile = 'satellite/training/pitch_baseball_226905824.png' +# testfile = 'satellite/training/pitch_baseball_227372226.png' +# testfile = 'satellite/training/pitch_baseball_227683244.png' + +# testfile = 'satellite/detection/pitch_baseball_133230978.png' +# testfile = 'satellite/detection/pitch_baseball_133593974.png' +# testfile = 'satellite/detection/pitch_baseball_134874855.png' +# testfile = 'satellite/detection/pitch_baseball_199130202.png' +# testfile = 'satellite/detection/pitch_baseball_284527697.png' +# testfile = 'satellite/detection/pitch_baseball_317137177.png' +# testfile = 'satellite/detection/pitch_baseball_48331085.png' +# testfile = 'satellite/detection/pitch_baseball_68467399.png' +# testfile = 'satellite/detection/pitch_baseball_81189377.png' +# testfile = 'satellite/detection/pitch_baseball_97575184.png' + +# testfile = 'satellite/detection/pitch_tennis_105660674.png' +# testfile = 'satellite/detection/pitch_tennis_120231577.png' +# testfile = 'satellite/detection/pitch_tennis_172547292.png' +# testfile = 'satellite/detection/pitch_tennis_177425633.png' +# testfile = 'satellite/detection/pitch_tennis_224740547.png' +# testfile = 'satellite/detection/pitch_tennis_250911604.png' +# testfile = 'satellite/detection/pitch_tennis_285058169.png' +# testfile = 'satellite/detection/pitch_tennis_290182837.png' +# testfile = 'satellite/detection/pitch_tennis_302813940.png' +# testfile = 'satellite/detection/pitch_tennis_343232913.png' + +# testfile = 'satellite/detection/pitch_basketball_139165791.png' +# testfile = 'satellite/detection/pitch_basketball_156416713.png' +testfile = 'satellite/detection/pitch_basketball_242894925.png' +# testfile = 'satellite/detection/pitch_basketball_256427642.png' +# testfile = 'satellite/detection/pitch_basketball_271825251.png' +# testfile = 'satellite/detection/pitch_basketball_276916820.png' +# testfile = 'satellite/detection/pitch_basketball_302422677.png' +# testfile = 'satellite/detection/pitch_basketball_331162643.png' +# testfile = 'satellite/detection/pitch_basketball_332627356.png' +# testfile = 'satellite/detection/pitch_basketball_48665083.png' + +img = cv2.imread(testfile) +gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + +pitches = basketball_cascade.detectMultiScale(gray, minNeighbors=200) +print 'Pitches found: %d' % len(pitches) +for (x,y,w,h) in pitches: + cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) + +cv2.imshow('img', img) +cv2.waitKey(0) +cv2.destroyAllWindows() diff --git a/satellite/.gitignore b/satellite/.gitignore index 97665e8..c4908ae 100644 --- a/satellite/.gitignore +++ b/satellite/.gitignore @@ -1,2 +1,3 @@ gray rectangle +fit diff --git a/satellite/negative/negative_1239337358.png b/satellite/negative/negative_1239337358.png deleted file mode 100644 index b773434..0000000 Binary files a/satellite/negative/negative_1239337358.png and /dev/null differ diff --git a/satellite/negative/negative_1465628912.png b/satellite/negative/negative_1465628912.png deleted file mode 100644 index 748aee9..0000000 Binary files a/satellite/negative/negative_1465628912.png and /dev/null differ diff --git a/satellite/negative/negative_1469806886.png b/satellite/negative/negative_1469806886.png deleted file mode 100644 index 430fac1..0000000 Binary files a/satellite/negative/negative_1469806886.png and /dev/null differ diff --git a/satellite/negative/negative_1477462366.png b/satellite/negative/negative_1477462366.png deleted file mode 100644 index 7dbfaaa..0000000 Binary files a/satellite/negative/negative_1477462366.png and /dev/null differ diff --git a/satellite/negative/negative_1479946096.png b/satellite/negative/negative_1479946096.png deleted file mode 100644 index 59c5358..0000000 Binary files a/satellite/negative/negative_1479946096.png and /dev/null differ diff --git a/satellite/negative/negative_1509079165.png b/satellite/negative/negative_1509079165.png deleted file mode 100644 index 3322b95..0000000 Binary files a/satellite/negative/negative_1509079165.png and /dev/null differ diff --git a/satellite/negative/negative_1531763822.png b/satellite/negative/negative_1531763822.png deleted file mode 100644 index 74757dd..0000000 Binary files a/satellite/negative/negative_1531763822.png and /dev/null differ diff --git a/satellite/negative/negative_1551531602.png b/satellite/negative/negative_1551531602.png deleted file mode 100644 index 5404f55..0000000 Binary files a/satellite/negative/negative_1551531602.png and /dev/null differ diff --git a/satellite/negative/negative_1659769605.png b/satellite/negative/negative_1659769605.png deleted file mode 100644 index 775ce21..0000000 Binary files a/satellite/negative/negative_1659769605.png and /dev/null differ diff --git a/satellite/negative/negative_1687660480.png b/satellite/negative/negative_1687660480.png deleted file mode 100644 index ddae9b4..0000000 Binary files a/satellite/negative/negative_1687660480.png and /dev/null differ diff --git a/satellite/negative/negative_1770303109.png b/satellite/negative/negative_1770303109.png deleted file mode 100644 index fdbf1cb..0000000 Binary files a/satellite/negative/negative_1770303109.png and /dev/null differ diff --git a/satellite/negative/negative_2094211295.png b/satellite/negative/negative_2094211295.png deleted file mode 100644 index ca64632..0000000 Binary files a/satellite/negative/negative_2094211295.png and /dev/null differ diff --git a/satellite/negative/negative_2190175391.png b/satellite/negative/negative_2190175391.png deleted file mode 100644 index ceb7551..0000000 Binary files a/satellite/negative/negative_2190175391.png and /dev/null differ diff --git a/satellite/negative/negative_2545053098.png b/satellite/negative/negative_2545053098.png deleted file mode 100644 index 81935d3..0000000 Binary files a/satellite/negative/negative_2545053098.png and /dev/null differ diff --git a/satellite/negative/negative_2603479878.png b/satellite/negative/negative_2603479878.png deleted file mode 100644 index 7e3a925..0000000 Binary files a/satellite/negative/negative_2603479878.png and /dev/null differ diff --git a/satellite/negative/negative_2624336037.png b/satellite/negative/negative_2624336037.png deleted file mode 100644 index c81f358..0000000 Binary files a/satellite/negative/negative_2624336037.png and /dev/null differ diff --git a/satellite/negative/negative_2701555441.png b/satellite/negative/negative_2701555441.png deleted file mode 100644 index 1361c83..0000000 Binary files a/satellite/negative/negative_2701555441.png and /dev/null differ diff --git a/satellite/negative/negative_2894565032.png b/satellite/negative/negative_2894565032.png deleted file mode 100644 index a9c7ce4..0000000 Binary files a/satellite/negative/negative_2894565032.png and /dev/null differ diff --git a/satellite/negative/negative_3058393913.png b/satellite/negative/negative_3058393913.png deleted file mode 100644 index 5355ca8..0000000 Binary files a/satellite/negative/negative_3058393913.png and /dev/null differ diff --git a/satellite/negative/negative_3172336959.png b/satellite/negative/negative_3172336959.png deleted file mode 100644 index ab64630..0000000 Binary files a/satellite/negative/negative_3172336959.png and /dev/null differ diff --git a/satellite/negative/negative_3235053434.png b/satellite/negative/negative_3235053434.png deleted file mode 100644 index 02bd9bd..0000000 Binary files a/satellite/negative/negative_3235053434.png and /dev/null differ diff --git a/satellite/negative/negative_3254025089.png b/satellite/negative/negative_3254025089.png deleted file mode 100644 index 41840e5..0000000 Binary files a/satellite/negative/negative_3254025089.png and /dev/null differ diff --git a/satellite/negative/negative_3407598977.png b/satellite/negative/negative_3407598977.png deleted file mode 100644 index cee361c..0000000 Binary files a/satellite/negative/negative_3407598977.png and /dev/null differ diff --git a/satellite/negative/negative_386283285.png b/satellite/negative/negative_386283285.png deleted file mode 100644 index 6cbc4b1..0000000 Binary files a/satellite/negative/negative_386283285.png and /dev/null differ diff --git a/satellite/negative/negative_779049065.png b/satellite/negative/negative_779049065.png deleted file mode 100644 index 7f3593d..0000000 Binary files a/satellite/negative/negative_779049065.png and /dev/null differ diff --git a/satellite/pitch_american_football_138015612.png b/satellite/pitch_american_football_138015612.png deleted file mode 100644 index 0ee77d1..0000000 Binary files a/satellite/pitch_american_football_138015612.png and /dev/null differ diff --git a/satellite/pitch_american_football_208324572.png b/satellite/pitch_american_football_208324572.png deleted file mode 100644 index 9bfeda6..0000000 Binary files a/satellite/pitch_american_football_208324572.png and /dev/null differ diff --git a/satellite/pitch_american_football_222718773.png b/satellite/pitch_american_football_222718773.png deleted file mode 100644 index d35c9f2..0000000 Binary files a/satellite/pitch_american_football_222718773.png and /dev/null differ diff --git a/satellite/pitch_american_football_243596300.png b/satellite/pitch_american_football_243596300.png deleted file mode 100644 index 0277b61..0000000 Binary files a/satellite/pitch_american_football_243596300.png and /dev/null differ diff --git a/satellite/pitch_american_football_256677303.png b/satellite/pitch_american_football_256677303.png deleted file mode 100644 index bc090f7..0000000 Binary files a/satellite/pitch_american_football_256677303.png and /dev/null differ diff --git a/satellite/pitch_american_football_289134124.png b/satellite/pitch_american_football_289134124.png deleted file mode 100644 index d362a75..0000000 Binary files a/satellite/pitch_american_football_289134124.png and /dev/null differ diff --git a/satellite/pitch_american_football_312162610.png b/satellite/pitch_american_football_312162610.png deleted file mode 100644 index 7d2275b..0000000 Binary files a/satellite/pitch_american_football_312162610.png and /dev/null differ diff --git a/satellite/pitch_american_football_322936139.png b/satellite/pitch_american_football_322936139.png deleted file mode 100644 index 6b2f228..0000000 Binary files a/satellite/pitch_american_football_322936139.png and /dev/null differ diff --git a/satellite/pitch_american_football_324615361.png b/satellite/pitch_american_football_324615361.png deleted file mode 100644 index af70d1f..0000000 Binary files a/satellite/pitch_american_football_324615361.png and /dev/null differ diff --git a/satellite/pitch_american_football_47851872.png b/satellite/pitch_american_football_47851872.png deleted file mode 100644 index e6f9f60..0000000 Binary files a/satellite/pitch_american_football_47851872.png and /dev/null differ diff --git a/satellite/pitch_baseball_133230978.png b/satellite/pitch_baseball_133230978.png deleted file mode 100644 index 5b1fb86..0000000 Binary files a/satellite/pitch_baseball_133230978.png and /dev/null differ diff --git a/satellite/pitch_baseball_133593974.png b/satellite/pitch_baseball_133593974.png deleted file mode 100644 index 35be45e..0000000 Binary files a/satellite/pitch_baseball_133593974.png and /dev/null differ diff --git a/satellite/pitch_baseball_134874855.png b/satellite/pitch_baseball_134874855.png deleted file mode 100644 index c84d520..0000000 Binary files a/satellite/pitch_baseball_134874855.png and /dev/null differ diff --git a/satellite/pitch_baseball_199130202.png b/satellite/pitch_baseball_199130202.png deleted file mode 100644 index 992090e..0000000 Binary files a/satellite/pitch_baseball_199130202.png and /dev/null differ diff --git a/satellite/pitch_baseball_284527697.png b/satellite/pitch_baseball_284527697.png deleted file mode 100644 index 799d9f7..0000000 Binary files a/satellite/pitch_baseball_284527697.png and /dev/null differ diff --git a/satellite/pitch_baseball_317137177.png b/satellite/pitch_baseball_317137177.png deleted file mode 100644 index 6d404b3..0000000 Binary files a/satellite/pitch_baseball_317137177.png and /dev/null differ diff --git a/satellite/pitch_baseball_48331085.png b/satellite/pitch_baseball_48331085.png deleted file mode 100644 index b3f59cb..0000000 Binary files a/satellite/pitch_baseball_48331085.png and /dev/null differ diff --git a/satellite/pitch_baseball_68467399.png b/satellite/pitch_baseball_68467399.png deleted file mode 100644 index eece282..0000000 Binary files a/satellite/pitch_baseball_68467399.png and /dev/null differ diff --git a/satellite/pitch_baseball_81189377.png b/satellite/pitch_baseball_81189377.png deleted file mode 100644 index 6556761..0000000 Binary files a/satellite/pitch_baseball_81189377.png and /dev/null differ diff --git a/satellite/pitch_baseball_97575184.png b/satellite/pitch_baseball_97575184.png deleted file mode 100644 index 643021a..0000000 Binary files a/satellite/pitch_baseball_97575184.png and /dev/null differ diff --git a/satellite/pitch_basketball_139165791.png b/satellite/pitch_basketball_139165791.png deleted file mode 100644 index 04769fa..0000000 Binary files a/satellite/pitch_basketball_139165791.png and /dev/null differ diff --git a/satellite/pitch_basketball_156416713.png b/satellite/pitch_basketball_156416713.png deleted file mode 100644 index 631ce66..0000000 Binary files a/satellite/pitch_basketball_156416713.png and /dev/null differ diff --git a/satellite/pitch_basketball_242894925.png b/satellite/pitch_basketball_242894925.png deleted file mode 100644 index bb50a6e..0000000 Binary files a/satellite/pitch_basketball_242894925.png and /dev/null differ diff --git a/satellite/pitch_basketball_256427642.png b/satellite/pitch_basketball_256427642.png deleted file mode 100644 index a4f3b68..0000000 Binary files a/satellite/pitch_basketball_256427642.png and /dev/null differ diff --git a/satellite/pitch_basketball_271825251.png b/satellite/pitch_basketball_271825251.png deleted file mode 100644 index 7e2134c..0000000 Binary files a/satellite/pitch_basketball_271825251.png and /dev/null differ diff --git a/satellite/pitch_basketball_276916820.png b/satellite/pitch_basketball_276916820.png deleted file mode 100644 index 533c7ff..0000000 Binary files a/satellite/pitch_basketball_276916820.png and /dev/null differ diff --git a/satellite/pitch_basketball_302422677.png b/satellite/pitch_basketball_302422677.png deleted file mode 100644 index 379cd56..0000000 Binary files a/satellite/pitch_basketball_302422677.png and /dev/null differ diff --git a/satellite/pitch_basketball_331162643.png b/satellite/pitch_basketball_331162643.png deleted file mode 100644 index f17e029..0000000 Binary files a/satellite/pitch_basketball_331162643.png and /dev/null differ diff --git a/satellite/pitch_basketball_332627356.png b/satellite/pitch_basketball_332627356.png deleted file mode 100644 index 8cb703f..0000000 Binary files a/satellite/pitch_basketball_332627356.png and /dev/null differ diff --git a/satellite/pitch_basketball_48665083.png b/satellite/pitch_basketball_48665083.png deleted file mode 100644 index 25c4792..0000000 Binary files a/satellite/pitch_basketball_48665083.png and /dev/null differ diff --git a/satellite/pitch_golf_175176750.png b/satellite/pitch_golf_175176750.png deleted file mode 100644 index eed4447..0000000 Binary files a/satellite/pitch_golf_175176750.png and /dev/null differ diff --git a/satellite/pitch_golf_227387788.png b/satellite/pitch_golf_227387788.png deleted file mode 100644 index 981355f..0000000 Binary files a/satellite/pitch_golf_227387788.png and /dev/null differ diff --git a/satellite/pitch_golf_245472836.png b/satellite/pitch_golf_245472836.png deleted file mode 100644 index 764d9cb..0000000 Binary files a/satellite/pitch_golf_245472836.png and /dev/null differ diff --git a/satellite/pitch_golf_251673614.png b/satellite/pitch_golf_251673614.png deleted file mode 100644 index 765719d..0000000 Binary files a/satellite/pitch_golf_251673614.png and /dev/null differ diff --git a/satellite/pitch_golf_268203925.png b/satellite/pitch_golf_268203925.png deleted file mode 100644 index adc5a3b..0000000 Binary files a/satellite/pitch_golf_268203925.png and /dev/null differ diff --git a/satellite/pitch_golf_278760920.png b/satellite/pitch_golf_278760920.png deleted file mode 100644 index 845d516..0000000 Binary files a/satellite/pitch_golf_278760920.png and /dev/null differ diff --git a/satellite/pitch_golf_302318288.png b/satellite/pitch_golf_302318288.png deleted file mode 100644 index 690b0ab..0000000 Binary files a/satellite/pitch_golf_302318288.png and /dev/null differ diff --git a/satellite/pitch_golf_330838130.png b/satellite/pitch_golf_330838130.png deleted file mode 100644 index e530fd5..0000000 Binary files a/satellite/pitch_golf_330838130.png and /dev/null differ diff --git a/satellite/pitch_golf_338074783.png b/satellite/pitch_golf_338074783.png deleted file mode 100644 index 9324bd3..0000000 Binary files a/satellite/pitch_golf_338074783.png and /dev/null differ diff --git a/satellite/pitch_golf_44348494.png b/satellite/pitch_golf_44348494.png deleted file mode 100644 index 5860d16..0000000 Binary files a/satellite/pitch_golf_44348494.png and /dev/null differ diff --git a/satellite/pitch_multi_120856186.png b/satellite/pitch_multi_120856186.png deleted file mode 100644 index 008381b..0000000 Binary files a/satellite/pitch_multi_120856186.png and /dev/null differ diff --git a/satellite/pitch_multi_126928909.png b/satellite/pitch_multi_126928909.png deleted file mode 100644 index 2d316bd..0000000 Binary files a/satellite/pitch_multi_126928909.png and /dev/null differ diff --git a/satellite/pitch_multi_133192148.png b/satellite/pitch_multi_133192148.png deleted file mode 100644 index 8d21f3d..0000000 Binary files a/satellite/pitch_multi_133192148.png and /dev/null differ diff --git a/satellite/pitch_multi_191660333.png b/satellite/pitch_multi_191660333.png deleted file mode 100644 index c959060..0000000 Binary files a/satellite/pitch_multi_191660333.png and /dev/null differ diff --git a/satellite/pitch_multi_198722358.png b/satellite/pitch_multi_198722358.png deleted file mode 100644 index 069410d..0000000 Binary files a/satellite/pitch_multi_198722358.png and /dev/null differ diff --git a/satellite/pitch_multi_208578647.png b/satellite/pitch_multi_208578647.png deleted file mode 100644 index 649d08f..0000000 Binary files a/satellite/pitch_multi_208578647.png and /dev/null differ diff --git a/satellite/pitch_multi_227726069.png b/satellite/pitch_multi_227726069.png deleted file mode 100644 index 0d56a48..0000000 Binary files a/satellite/pitch_multi_227726069.png and /dev/null differ diff --git a/satellite/pitch_multi_297125974.png b/satellite/pitch_multi_297125974.png deleted file mode 100644 index 99bc865..0000000 Binary files a/satellite/pitch_multi_297125974.png and /dev/null differ diff --git a/satellite/pitch_multi_306784237.png b/satellite/pitch_multi_306784237.png deleted file mode 100644 index 4a77f5f..0000000 Binary files a/satellite/pitch_multi_306784237.png and /dev/null differ diff --git a/satellite/pitch_multi_83861607.png b/satellite/pitch_multi_83861607.png deleted file mode 100644 index 5f99786..0000000 Binary files a/satellite/pitch_multi_83861607.png and /dev/null differ diff --git a/satellite/pitch_soccer_141729871.png b/satellite/pitch_soccer_141729871.png deleted file mode 100644 index ea056e3..0000000 Binary files a/satellite/pitch_soccer_141729871.png and /dev/null differ diff --git a/satellite/pitch_soccer_162680940.png b/satellite/pitch_soccer_162680940.png deleted file mode 100644 index 7c3a225..0000000 Binary files a/satellite/pitch_soccer_162680940.png and /dev/null differ diff --git a/satellite/pitch_soccer_169921118.png b/satellite/pitch_soccer_169921118.png deleted file mode 100644 index edc1c18..0000000 Binary files a/satellite/pitch_soccer_169921118.png and /dev/null differ diff --git a/satellite/pitch_soccer_170622155.png b/satellite/pitch_soccer_170622155.png deleted file mode 100644 index 1ec47e2..0000000 Binary files a/satellite/pitch_soccer_170622155.png and /dev/null differ diff --git a/satellite/pitch_soccer_191871212.png b/satellite/pitch_soccer_191871212.png deleted file mode 100644 index 3dc01d9..0000000 Binary files a/satellite/pitch_soccer_191871212.png and /dev/null differ diff --git a/satellite/pitch_soccer_207004847.png b/satellite/pitch_soccer_207004847.png deleted file mode 100644 index 07af04b..0000000 Binary files a/satellite/pitch_soccer_207004847.png and /dev/null differ diff --git a/satellite/pitch_soccer_231250753.png b/satellite/pitch_soccer_231250753.png deleted file mode 100644 index 29ba299..0000000 Binary files a/satellite/pitch_soccer_231250753.png and /dev/null differ diff --git a/satellite/pitch_soccer_315148027.png b/satellite/pitch_soccer_315148027.png deleted file mode 100644 index 7c6ff22..0000000 Binary files a/satellite/pitch_soccer_315148027.png and /dev/null differ diff --git a/satellite/pitch_soccer_40666614.png b/satellite/pitch_soccer_40666614.png deleted file mode 100644 index 3cdfaf5..0000000 Binary files a/satellite/pitch_soccer_40666614.png and /dev/null differ diff --git a/satellite/pitch_soccer_55975004.png b/satellite/pitch_soccer_55975004.png deleted file mode 100644 index 759a6be..0000000 Binary files a/satellite/pitch_soccer_55975004.png and /dev/null differ diff --git a/satellite/pitch_softball_170604460.png b/satellite/pitch_softball_170604460.png deleted file mode 100644 index 07d8ade..0000000 Binary files a/satellite/pitch_softball_170604460.png and /dev/null differ diff --git a/satellite/pitch_softball_205824376.png b/satellite/pitch_softball_205824376.png deleted file mode 100644 index 4c16833..0000000 Binary files a/satellite/pitch_softball_205824376.png and /dev/null differ diff --git a/satellite/pitch_softball_234840502.png b/satellite/pitch_softball_234840502.png deleted file mode 100644 index 33273fd..0000000 Binary files a/satellite/pitch_softball_234840502.png and /dev/null differ diff --git a/satellite/pitch_softball_285275356.png b/satellite/pitch_softball_285275356.png deleted file mode 100644 index 21d3d73..0000000 Binary files a/satellite/pitch_softball_285275356.png and /dev/null differ diff --git a/satellite/pitch_softball_296091024.png b/satellite/pitch_softball_296091024.png deleted file mode 100644 index d305761..0000000 Binary files a/satellite/pitch_softball_296091024.png and /dev/null differ diff --git a/satellite/pitch_softball_31000730.png b/satellite/pitch_softball_31000730.png deleted file mode 100644 index c604744..0000000 Binary files a/satellite/pitch_softball_31000730.png and /dev/null differ diff --git a/satellite/pitch_softball_310462293.png b/satellite/pitch_softball_310462293.png deleted file mode 100644 index 8cc82bd..0000000 Binary files a/satellite/pitch_softball_310462293.png and /dev/null differ diff --git a/satellite/pitch_softball_311432471.png b/satellite/pitch_softball_311432471.png deleted file mode 100644 index f518b49..0000000 Binary files a/satellite/pitch_softball_311432471.png and /dev/null differ diff --git a/satellite/pitch_softball_69701783.png b/satellite/pitch_softball_69701783.png deleted file mode 100644 index 813c99c..0000000 Binary files a/satellite/pitch_softball_69701783.png and /dev/null differ diff --git a/satellite/pitch_softball_96046405.png b/satellite/pitch_softball_96046405.png deleted file mode 100644 index c405597..0000000 Binary files a/satellite/pitch_softball_96046405.png and /dev/null differ diff --git a/satellite/pitch_tennis_105660674.png b/satellite/pitch_tennis_105660674.png deleted file mode 100644 index 74b6bf3..0000000 Binary files a/satellite/pitch_tennis_105660674.png and /dev/null differ diff --git a/satellite/pitch_tennis_120231577.png b/satellite/pitch_tennis_120231577.png deleted file mode 100644 index 57ca011..0000000 Binary files a/satellite/pitch_tennis_120231577.png and /dev/null differ diff --git a/satellite/pitch_tennis_172547292.png b/satellite/pitch_tennis_172547292.png deleted file mode 100644 index 2593cf7..0000000 Binary files a/satellite/pitch_tennis_172547292.png and /dev/null differ diff --git a/satellite/pitch_tennis_177425633.png b/satellite/pitch_tennis_177425633.png deleted file mode 100644 index 68af464..0000000 Binary files a/satellite/pitch_tennis_177425633.png and /dev/null differ diff --git a/satellite/pitch_tennis_224740547.png b/satellite/pitch_tennis_224740547.png deleted file mode 100644 index a5b8043..0000000 Binary files a/satellite/pitch_tennis_224740547.png and /dev/null differ diff --git a/satellite/pitch_tennis_250911604.png b/satellite/pitch_tennis_250911604.png deleted file mode 100644 index bb8d5cd..0000000 Binary files a/satellite/pitch_tennis_250911604.png and /dev/null differ diff --git a/satellite/pitch_tennis_285058169.png b/satellite/pitch_tennis_285058169.png deleted file mode 100644 index 440961d..0000000 Binary files a/satellite/pitch_tennis_285058169.png and /dev/null differ diff --git a/satellite/pitch_tennis_290182837.png b/satellite/pitch_tennis_290182837.png deleted file mode 100644 index e7fa3f2..0000000 Binary files a/satellite/pitch_tennis_290182837.png and /dev/null differ diff --git a/satellite/pitch_tennis_302813940.png b/satellite/pitch_tennis_302813940.png deleted file mode 100644 index 5bdc730..0000000 Binary files a/satellite/pitch_tennis_302813940.png and /dev/null differ diff --git a/satellite/pitch_tennis_343232913.png b/satellite/pitch_tennis_343232913.png deleted file mode 100644 index 98c5a43..0000000 Binary files a/satellite/pitch_tennis_343232913.png and /dev/null differ diff --git a/satellite/pitch_unknown_123680240.png b/satellite/pitch_unknown_123680240.png deleted file mode 100644 index 1b6bef3..0000000 Binary files a/satellite/pitch_unknown_123680240.png and /dev/null differ diff --git a/satellite/pitch_unknown_151948029.png b/satellite/pitch_unknown_151948029.png deleted file mode 100644 index 9e7ef76..0000000 Binary files a/satellite/pitch_unknown_151948029.png and /dev/null differ diff --git a/satellite/pitch_unknown_152578925.png b/satellite/pitch_unknown_152578925.png deleted file mode 100644 index 1b5daf5..0000000 Binary files a/satellite/pitch_unknown_152578925.png and /dev/null differ diff --git a/satellite/pitch_unknown_152688738.png b/satellite/pitch_unknown_152688738.png deleted file mode 100644 index 776360e..0000000 Binary files a/satellite/pitch_unknown_152688738.png and /dev/null differ diff --git a/satellite/pitch_unknown_229338257.png b/satellite/pitch_unknown_229338257.png deleted file mode 100644 index 6dcf2a8..0000000 Binary files a/satellite/pitch_unknown_229338257.png and /dev/null differ diff --git a/satellite/pitch_unknown_264786946.png b/satellite/pitch_unknown_264786946.png deleted file mode 100644 index 6b2add7..0000000 Binary files a/satellite/pitch_unknown_264786946.png and /dev/null differ diff --git a/satellite/pitch_unknown_286780390.png b/satellite/pitch_unknown_286780390.png deleted file mode 100644 index f5b9323..0000000 Binary files a/satellite/pitch_unknown_286780390.png and /dev/null differ diff --git a/satellite/pitch_unknown_288411386.png b/satellite/pitch_unknown_288411386.png deleted file mode 100644 index d5cae30..0000000 Binary files a/satellite/pitch_unknown_288411386.png and /dev/null differ diff --git a/satellite/pitch_unknown_339454428.png b/satellite/pitch_unknown_339454428.png deleted file mode 100644 index 10bf63d..0000000 Binary files a/satellite/pitch_unknown_339454428.png and /dev/null differ diff --git a/satellite/pitch_unknown_91981160.png b/satellite/pitch_unknown_91981160.png deleted file mode 100644 index 879c6e5..0000000 Binary files a/satellite/pitch_unknown_91981160.png and /dev/null differ diff --git a/satellite/pitch_volleyball_188558393.png b/satellite/pitch_volleyball_188558393.png deleted file mode 100644 index 358bb14..0000000 Binary files a/satellite/pitch_volleyball_188558393.png and /dev/null differ diff --git a/satellite/pitch_volleyball_202503673.png b/satellite/pitch_volleyball_202503673.png deleted file mode 100644 index 5805ce7..0000000 Binary files a/satellite/pitch_volleyball_202503673.png and /dev/null differ diff --git a/satellite/pitch_volleyball_206157716.png b/satellite/pitch_volleyball_206157716.png deleted file mode 100644 index 91d959e..0000000 Binary files a/satellite/pitch_volleyball_206157716.png and /dev/null differ diff --git a/satellite/pitch_volleyball_216231362.png b/satellite/pitch_volleyball_216231362.png deleted file mode 100644 index 1b50779..0000000 Binary files a/satellite/pitch_volleyball_216231362.png and /dev/null differ diff --git a/satellite/pitch_volleyball_233697784.png b/satellite/pitch_volleyball_233697784.png deleted file mode 100644 index 9cea111..0000000 Binary files a/satellite/pitch_volleyball_233697784.png and /dev/null differ diff --git a/satellite/pitch_volleyball_242666079.png b/satellite/pitch_volleyball_242666079.png deleted file mode 100644 index d63c7e0..0000000 Binary files a/satellite/pitch_volleyball_242666079.png and /dev/null differ diff --git a/satellite/pitch_volleyball_268478401.png b/satellite/pitch_volleyball_268478401.png deleted file mode 100644 index ef51d7a..0000000 Binary files a/satellite/pitch_volleyball_268478401.png and /dev/null differ diff --git a/satellite/pitch_volleyball_269077687.png b/satellite/pitch_volleyball_269077687.png deleted file mode 100644 index c888313..0000000 Binary files a/satellite/pitch_volleyball_269077687.png and /dev/null differ diff --git a/satellite/pitch_volleyball_295193244.png b/satellite/pitch_volleyball_295193244.png deleted file mode 100644 index 4957c76..0000000 Binary files a/satellite/pitch_volleyball_295193244.png and /dev/null differ diff --git a/satellite/pitch_volleyball_330316573.png b/satellite/pitch_volleyball_330316573.png deleted file mode 100644 index d4abd7c..0000000 Binary files a/satellite/pitch_volleyball_330316573.png and /dev/null differ diff --git a/utils/geo.py b/utils/geo.py index fad8ea2..4ba197b 100644 --- a/utils/geo.py +++ b/utils/geo.py @@ -1,4 +1,8 @@ from shapely.geometry import Polygon +import math + +image_width = 1280 +image_height = 1280 ELEMENTS_FILENAME = 'data/elements.json' WAYS_DATA_FILENAME = 'data/ways.json' @@ -27,3 +31,35 @@ def get_ways_data(elements, coords): # Done return ways_data + +def get_rectangle(bounds): + # This converts a latitude delta into an image delta. For USA, at zoom + # level 19, we know that we have 0.21 meters/pixel. So, an image is showing + # about 1280 pixels * 0.21 meters/pixel = 268.8 meters. + # On the other hand we know that at the same angle, a degress in latlon is: + # https://en.wikipedia.org/wiki/Latitude + # latitude = 111,132 m + # longitude = 78,847 m + latitude_factor = 111132.0 / 0.21 + longitude_factor = 78847.0 / 0.21 + + # Feature size + feature_width = longitude_factor * math.fabs(bounds[1] - bounds[3]) + feature_height = latitude_factor * math.fabs(bounds[0] - bounds[2]) + if feature_width > image_width or feature_height > image_height: + print '** Warning ** The feature is bigger than the image.' + + # CV params (int required) + x = int((image_width / 2) - (feature_width / 2)) + y = int((image_height / 2) - (feature_height / 2)) + w = int(feature_width) + h = int(feature_height) + if w <= 25 or h <= 25: + print '** Warning ** This image has very narrow bounds.' + print bounds + print x, y, w, h + if x <= 0 or y <= 0 or w <= 0 or h <= 0: + print '** Warning ** There is something wrong with this image bounds.' + print bounds + print x, y, w, h + return x, y, w, h