Курсовой проект по курсу Computer Vision: инженерный метод детектирования штрих кодов c использованием преобразования Хафа.
Репозиторий содержит:
prj.cw/misis2024s— основной проект, детекция штрих кодовprj.lab— лабораторные задания
Используется набор изображений, снятых в разных условиях и под различными углами.
Для каждого изображения подготовлена карта бинарной сегментации (ground truth), которая помогает локализовать область поиска.
BGR → Grayscale- медианная фильтрация (снижение шума)
- автоматический подбор порогов Canny на основе медианы интенсивностей и коэффициента
sigma Canny → карта границ
Дополнительно формируется визуализация “оригинал + карта границ”.
На маскированной карте применяется cv::HoughLinesP.
Параметры:
- rho = 1 (пиксели)
- theta = 1°
- threshold = 50
- minLineLength = 50
- maxLineGap = 10
Все найденные линии рисуются на исходных изображениях.
Если линии найдены, собираются все концы линий и строится минимальный прямоугольник.
barcode_rect = cv::boundingRect(points);
cv::rectangle(img, barcode_rect, cv::Scalar(0,255,0), 2);Из parsed_data.json загружается разметка и на изображении наносится “идеальный” прямоугольник (белым). Это позволяет визуально сравнить результат детектора с разметкой.
Реализовано два удобных способа сборки проекта: через IDE (Visual Studio / CLion) или через командную строку.
- CMake 3.15+
- C++ compiler with C++17 support
- OpenCV (dev package)
git clone https://github.com/Dashibug/Custom_barcode_detection.git
cd Custom_barcode_detection
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -jcmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config ReleaseПосле сборки бинарники будут в одной из папок:
- build/Release/
- или build/<target_name>.exe (зависит от генератора)