{"id":27998582,"url":"https://github.com/romanalexandroff/digiteq_python_hackathon","last_synced_at":"2025-10-16T06:57:44.819Z","repository":{"id":284927170,"uuid":"956511270","full_name":"RomanAlexandroff/Digiteq_Python_Hackathon","owner":"RomanAlexandroff","description":"My solution for the Python Computer Vision hackathon organised by Digiteq Automotive in 2025","archived":false,"fork":false,"pushed_at":"2025-03-28T12:09:38.000Z","size":4420,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-08T22:54:18.111Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RomanAlexandroff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-28T11:27:55.000Z","updated_at":"2025-03-30T19:10:43.000Z","dependencies_parsed_at":"2025-03-28T12:42:26.395Z","dependency_job_id":null,"html_url":"https://github.com/RomanAlexandroff/Digiteq_Python_Hackathon","commit_stats":null,"previous_names":["romanalexandroff/digiteq_python_hackathon"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RomanAlexandroff%2FDigiteq_Python_Hackathon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RomanAlexandroff%2FDigiteq_Python_Hackathon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RomanAlexandroff%2FDigiteq_Python_Hackathon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RomanAlexandroff%2FDigiteq_Python_Hackathon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RomanAlexandroff","download_url":"https://codeload.github.com/RomanAlexandroff/Digiteq_Python_Hackathon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253160814,"owners_count":21863625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-08T22:54:17.248Z","updated_at":"2025-10-16T06:57:39.749Z","avatar_url":"https://github.com/RomanAlexandroff.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Digiteq Logo](https://www.savs.cz/image-cache/db-public/images/3331/image/digiteq-logo-rgb.jpg_1000x259.jpg?ts=1720481469)\n# Digiteq Automotive Python Hackathon\n\n## Overview\nThis project is a Python-based solution for detecting and classifying emojis in images. It processes a dataset of images, identifies emojis, and classifies them into predefined categories such as \"happy\", \"sad\", \"angry\", \"crying\", and \"surprised\".\n\n## The Hackathon Challenge\nThe challenge is to spot five types of emojis (happy, sad, crying, surprised, and angry) within a picture that's 800x600. These emojis can come in different sizes, colors, rotations, tilts, and may be a bit distorted. You might also find multiple emojis of each type in one picture. Before you start coding, take a look at the dataset to see what you're working with. You will be provided more then 1000 pictures for training and validation. Subsequently, at the end of the day your algorithm will be automatically tested on 280 pictures with the same data distribution. The output of the code will consist of the name of the picture, the name of each detected emoji, and the coordinates of the top-left corner of each detected emoji. This will allow for the identification of multiple emojis within a single picture. You will be awarded 1 point for each correctly classified emoji and 0.5 points for emojis that are properly classified but have coordinates off by 40 pixels or more. In case of missclassified emoji you lose 0.5 points.\n\n## Features\n- Detects emojis in images using contour detection.\n- Classifies emojis based on edge detection and pixel intensity.\n- Handles merging of emoji parts and filters overlapping detections.\n- Outputs predictions in a standardized format for evaluation.\n\n## File Structure\nevaluate_main.py: Automatic evaluations program.\nevaluation.py: Contains the evaluation logic for comparing predictions with ground truth labels.\nyour_implementation.py: Main implementation for emoji detection and classification.\nrequirements.txt: Lists the required Python libraries.\ndata: Folder with multiple datasets.\n.venv: Virtual environment folder.\n\n## Usage\nSet up the project on your machine:\n```bash\n    git clone https://github.com/RomanAlexandroff/Digiteq_Python_Hackathon.git\n    cd Digiteq_Python_Hackathon\n    python3 -m venv .venv\n    source .venv/bin/activate\n    pip install -r requirements.txt\n```\nRun the automatic evaluation:\n```bash\n    python evaluate_main.py data/train/labels.csv\n```\nEvaluate the results.\n\nTo try the solution on another dataset:\n- change the path to datasets in your_implementation.py, row 40\n- change the path to datasets when calling python evaluate_main.py data/SOME_OTHER_DATASET/labels.csv\n\n## How It Works\nEmoji Detection:\n- The program reads images from the dataset folder.\n- Converts images to grayscale and applies binary thresholding.\n- Finds contours to detect emoji positions.\n\nEmoji Classification:\n- Crops detected emoji regions.\n- Uses edge detection and pixel intensity to classify emojis into categories.\n\nOutput:\n- Prints the detected emojis and their coordinates in the format:\n```\nPicture: \u003cimage_name\u003e\nEmoji: \u003cemoji_type\u003e Coordinates: (\u003cx\u003e, \u003cy\u003e)\n```\n\n## Error Handling\nThe program skips images that are missing or cannot be processed.\nOutputs detailed error messages for debugging.\n\n## Credits\nAutomatic Evaluation Program by Digiteq Automotive.\nSolution by Roman Alexandrov\nEmail: r.aleksandroff@gmail.com","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromanalexandroff%2Fdigiteq_python_hackathon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fromanalexandroff%2Fdigiteq_python_hackathon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromanalexandroff%2Fdigiteq_python_hackathon/lists"}