Форум программистов, компьютерный форум CyberForum.ru

Реализовать распознавание штрих-кода на изображении и их расшифровку - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.90
Rayvol
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 46
26.12.2012, 20:16     Реализовать распознавание штрих-кода на изображении и их расшифровку #1
Добрый день, нужна помощь с реализацией.
Задание:
Реализовать распознавание штрих-кода на изображении и их расшифровку. У нас дана, к примеру, фотография с обычным штрих (бар) кодом (без сложностей типа Qr или Aztec кодов). Используется opencv (желательно).

Заранее благодарен за помощь с кодом или идеям способов реализации.

Добавлено через 1 час 7 минут
В данном случае нужна помощь с распознаванием и расшифровкой штрих-кода типа EAN-13. Алгоритм расшифровки (на той же википедии) я понял, но как это представить в с++ (или opencv) - не выходит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2012, 20:16     Реализовать распознавание штрих-кода на изображении и их расшифровку
Посмотрите здесь:

Последний штрих. C++
Распознавание кода C++
C++ Как реализовать вставку ассемблерного кода в код с++ для очистки экрана?
C++ Подсчет денег на изображении
C++ Как вернуть из функции ошибку и её расшифровку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nagdiel
 Аватар для Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
26.12.2012, 21:53     Реализовать распознавание штрих-кода на изображении и их расшифровку #2
Вот здесь посмотрите
Алгоритм распознавание штрих-кода

Вариант алгоритма распознавания EAN 13.
Rayvol
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 46
26.12.2012, 22:10  [ТС]     Реализовать распознавание штрих-кода на изображении и их расшифровку #3
Цитата Сообщение от Nagdiel Посмотреть сообщение
Вот здесь посмотрите
Алгоритм распознавание штрих-кода

Вариант алгоритма распознавания EAN 13.
Благодарю. Дельная идея, поможет. Еще бы был исходник реализации
Rayvol
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 46
10.01.2013, 23:54  [ТС]     Реализовать распознавание штрих-кода на изображении и их расшифровку #4
Нужна небольшая помощь в данной работе.
Что есть:
У нас есть рисунок, содержащий штрих-код (во вложении)
Что нужно:
Вывести закономерность белого и черного цвета (по верхней линии штрих кода) где белый это 0, а черный 1 (по одному символу на пиксель) и создать некую матрицу вида 111-000-11-00 итд. Затем из полученной закономерности надо расшифровать штрих код (в моем случае должно получиться 123456)(расшифровка) и вывести в итоге (в консоли) значения, зашифрованные в этом штрих коде.
С созданием матрицы я уже вроде бы разобрался, а вот с расшифровкой - проблема. Не понимаю, как сделать алгоритм. Очень нужна помощь в этом.
Для упрощения штрих-код обрезал в редакторе изображений, чтобы первый пиксель был черный.
Код для проверки пикселей:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <QtCore/QCoreApplication>
#include <string.h>
#include <QtGui/QColor>
#include <QtGui/QImage>
#include <QtGui/QPixmap>
#include <QtGui/QPicture>
#include <QtGui/QPainter>
#include <QPoint>
#include <QPointF>
#include <QtGui/QWidget>
#include <QtGui/QtGui>
#include <QTextStream>
 
QTextStream qout(stdout);
QTextStream qin(stdin);
 
int main(int argc, char **argv)
{
    int s = 0;
    int n;
    QImage img1("test1.png");
    n = img1.width();
    int mas[n];
    for (int i = 0; i<n; i++)
    {
        mas[i] = 1;
    }
    bool a = true;
    QColor pix1;
    QColor pix2;
    pix1.setRgb(img1.pixel(1,1));
    for (int i = 1; i<n; i++)
    {
        pix2.setRgb(img1.pixel(i,1));
        if (pix1 != pix2)
        {
            mas[i] = 0;
        }
    }
 
    for (int i = 0; i<n; i++)
    {
        qout<<mas[i]<<" ";
    }
    return 0;
}
И функция

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
for (int i = 1; i<n; i++)
    {
        pix1.setRgb(img1.pixel(i,0)); //считываю пиксель
        pix2.setRgb(img1.pixel(i-1,0)); // тоже самое с предыдущим
        if (pix1 == pix2)
        {
            mas[i-1] = 1;
        }
        else
        {
            mas[i-1] = 1;
            a = false;
        }
        if (a = false)
        {
            for (int j = i; j<n; j++)
            {
 
                pix1.setRgb(img1.pixel(j,0));
                pix2.setRgb(img1.pixel(j-1,0));
                if (pix1 == pix2)
                {
                    mas[j-1] = 0;
                }
                else
                {
                    mas[j-1] = 0;
                    a = true;
                    i=j;
                    break;
                }
            }
        }
    }
#FFFFFF
#FFFFFE
Миниатюры
Реализовать распознавание штрих-кода на изображении и их расшифровку  
Yandex
Объявления
10.01.2013, 23:54     Реализовать распознавание штрих-кода на изображении и их расшифровку
Ответ Создать тему
Опции темы

Текущее время: 04:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru