bus_analyzer: Parse the final odo digit

pull/361/head
Mike Lang 1 year ago
parent 907d1ba6f9
commit 2ae273a75c

@ -110,9 +110,14 @@ def recognize_digit(prototypes, image):
all_scores is for debugging. all_scores is for debugging.
If the most likely detection is NOT a number, None is returned instead. If the most likely detection is NOT a number, None is returned instead.
""" """
def maybeFloat(n):
try:
return float(n)
except ValueError:
return None
scores = sorted([ scores = sorted([
(compare_images(prototype, image), int(n) if n.isdigit() else None) (compare_images(prototype, image), maybeFloat(n))
for n, prototype in prototypes["odo-digits"].items() for n, prototype in prototypes.items()
], reverse=True) ], reverse=True)
best_score, number = scores[0] best_score, number = scores[0]
runner_up_score, _ = scores[1] runner_up_score, _ = scores[1]
@ -148,7 +153,7 @@ def read_digit(digit, prototypes_path="./prototypes", verbose=False):
"""For debugging. Compares an extracted digit image to each prototype and prints scores.""" """For debugging. Compares an extracted digit image to each prototype and prints scores."""
prototypes = load_prototypes(prototypes_path) prototypes = load_prototypes(prototypes_path)
digit = Image.open(digit) digit = Image.open(digit)
guess, score, all_scores = recognize_digit(prototypes, digit) guess, score, all_scores = recognize_digit(prototypes["odo-digits"], digit)
print("Digit = {} with score {}".format(guess, score)) print("Digit = {} with score {}".format(guess, score))
if verbose: if verbose:
all_scores.sort(key=lambda x: x[1]) all_scores.sort(key=lambda x: x[1])
@ -162,13 +167,17 @@ def recognize_odometer(prototypes, frame):
digits is for debugging. digits is for debugging.
""" """
odo = extract_odo(frame) odo = extract_odo(frame)
digits = extract_digits(odo, include_last=False) digits = extract_digits(odo, include_last=True)
digits = [recognize_digit(prototypes, digit) for digit in digits] digits = [
recognize_digit(prototypes["odo-digits"], digit) for digit in digits[:-1]
] + [
recognize_digit(prototypes["odo-last-digit"], digits[-1])
]
# If any digit is None, report whole thing as None. Otherwise, calculate the number. # If any digit is None, report whole thing as None. Otherwise, calculate the number.
if any(digit is None for digit, _, _ in digits): if any(digit is None for digit, _, _ in digits):
value = None value = None
else: else:
value = sum(digit * 10.**i for i, (digit, _, _) in enumerate(digits[::-1])) value = sum(digit * 10.**i for i, (digit, _, _) in zip(range(3, -2, -1), digits))
# Use average score of digits as frame score # Use average score of digits as frame score
score = sum(score for _, score, _ in digits) / len(digits) score = sum(score for _, score, _ in digits) / len(digits)
return value, score, digits return value, score, digits

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 735 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 B

Loading…
Cancel
Save