Code Monkey home page Code Monkey logo

ssocr's Introduction

SSOCR

Seven Segment Optical Character Recognition

Algorithm

solution

DIGITS_LOOKUP = {
    (1, 1, 1, 1, 1, 1, 0): 0,
    (1, 1, 0, 0, 0, 0, 0): 1,
    (1, 0, 1, 1, 0, 1, 1): 2,
    (1, 1, 1, 0, 0, 1, 1): 3,
    (1, 1, 0, 0, 1, 0, 1): 4,
    (0, 1, 1, 0, 1, 1, 1): 5,
    (0, 1, 1, 1, 1, 1, 1): 6,
    (1, 1, 0, 0, 0, 1, 0): 7,
    (1, 1, 1, 1, 1, 1, 1): 8,
    (1, 1, 1, 0, 1, 1, 1): 9,
    (0, 0, 0, 0, 0, 1, 1): '-'
}

Digital recognition of seven-segment digital tube is relatively simple compared to handwritten numeral.

Detect the existence of the corresponding bit, then encode the image, you can accurately identify the number.

Requirements

  • opencv
  • numpy
  • matplotlib

Setup

git clone https://github.com/jiweibo/SSOCR.git
python ssocr.py images/test1.bmp -s

Results

test1.bmp res1.bmp test2.bmp res2.bmp test3.bmp res3.bmp test4.bmp res4.bmp

$ python ssocr.py images\test1.BMP
['-', 3, 0, '.', 3, 7]
$ python ssocr.py images\test2.BMP -s
[1, 7, 7, '.', 7]
$ python ssocr.py images\test3.BMP -s
[0, 7, 8, '.', 3]
$ python ssocr.py images\test4.BMP -s
[0, 7, 2, '.', 6]

Acknowledge

SSOCR

ssocr's People

Contributors

jiweibo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ssocr's Issues

Examples are not working?

Just tried this project with the latest opencv and matplotlib versions and I'm getting a division by zero error?.

Any advise?

Hi

Im having problems on proccessing new images threw your code, i know the problems are with the commented lines in it.
Can you give a help with this?
Thanks a lot

It doesn't work on multi line LCD display

The solution As-Is works for a single line LCD display. How difficult would it be to detect multiline LCD display image and output the results in a list ordered from top down?

How to Input a test image of seven segment display in code for testing purpose?

Sir,
Greetings!

I wanted to know how to test the code with a test image (.jpg/.png/.bmp) to verify functionality of code for our application.
I tried:

  1. (I am still learning argparse) I included default path - Did not work
    parser = argparse.ArgumentParser() parser.add_argument('image_path', help='path to image', default = "C:/Users/Vishw/OneDrive/Desktop/Embtech Internship 2021/Bat_seasoning_rasberryPICV/dep.png")

  2. I tried initializing path below defined load_image() function - Did not work
    def load_image(path, show=False): path = "C:/Users/Vishw/OneDrive/Desktop/Embtech Internship 2021/Bat_seasoning_rasberryPICV/dep.png"
    gray_img = cv2.imread(path, cv2.IMREAD_GRAYSCALE) h, w = gray_img.shape
    blurred = cv2.GaussianBlur(gray_img, (7, 7), 0) if show: cv2.imshow('gray_img', gray_img) cv2.imshow('blurred_img', blurred) return blurred, gray_img

Kindly suggest me what to do.

Thank you!

integer division or modulo by zero

I followed the instruction inputing: python ssocr.py images/test1.bmp -s
Error messages happened:
File "ssocr.py", line 252, in recognize_digits_line_method
if cv2.countNonZero(roi[h - int(3 * width / 4):h, w - int(3 * width / 4):w]) / (9 / 16 * width * width) > 0.65:
ZeroDivisionError: integer division or modulo by zero

I changed the testing images from test2.bmp to test2.bmp, the results were the same.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.