Форум программистов, компьютерный форум, киберфорум
C++: OpenCV
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
3 / 3 / 0
Регистрация: 29.07.2016
Сообщений: 217

Чтение Qr кода. Zbar и OpenCV не видят код

07.02.2024, 10:49. Показов 11697. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <opencv2/imgproc.hpp> // Gaussian Blur
#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp> // OpenCV window I/O
#include <opencv2/features2d.hpp>
#include <opencv2/objdetect.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <zbar.h>
using namespace cv;
using namespace std;
using namespace zbar;
 
int main()
{
    /*ImageScanner scanner;
    scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
    // Вызовите системную камеру
    VideoCapture cap(0);
    Mat mFrame;
    while (1)
    {
        cap >> mFrame;
        Mat image = mFrame;
        imshow("camera", mFrame);
        Mat imageGray;
        cvtColor(image, imageGray, COLOR_BGR2GRAY);
        int width = imageGray.cols;
        int height = imageGray.rows;
        uchar* raw = (uchar*)imageGray.data;
        // при сканировании в Zbar,
        // Вам нужно преобразовать тип мата в OpenCV в тип (UCHAR *), а адрес изображения хранится в RAW;
        // соответствующее изображение должно быть преобразовано в соответствующее изображение ZBAR :: Image
        Image imageZbar(width, height, "Y800", raw, width * height);
        // y800 = серый серо -серой изображение
        scanner.scan(imageZbar);
        Image::SymbolIterator symbol = imageZbar.symbol_begin();
        for (; symbol != imageZbar.symbol_end(); ++symbol)
        {
            cout << "type:" << endl << symbol->get_type_name() << endl << endl;
            cout << "Barcode:" << endl << symbol->get_data() << endl << endl;
        }
        waitKey(5);
        // waitKey () Функция функции заключается в том, чтобы постоянно обновлять изображение, частота - задержка, единица - MS
    }
    waitKey();*/
    ImageScanner Scan;
    Scan.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
    Mat image = imread("C:/Users/KirillNSK/Desktop/textqr2.png");
    if (!image.data) {
        cout << "Please enter image" << endl;
        system("pause");
        return 0;
    }
    Mat imageGray;
    cvtColor(image, imageGray, COLOR_RGB2HLS);
    int width = imageGray.cols;
    int height = imageGray.rows;
    uchar* raw = (uchar*)imageGray.data;
    Image imageZbar(width, height, "Y800", raw, width * height);
    Scan.scan(imageZbar);
    Image::SymbolIterator symbol = imageZbar.symbol_begin();
    if (imageZbar.symbol_begin() == imageZbar.symbol_end()) {
        cout << "cartinci net!" << endl;
    }
    for (; symbol != imageZbar.symbol_end(); ++symbol) {
        cout << "Types of:" << endl << symbol->get_type_name() << endl << endl;
        cout << "Barcode:" << endl << symbol->get_data() << endl << endl;
    }
    imshow("Display", image);
    waitKey(0);
    imageZbar.set_data(NULL, 0);
    return 0;
}]
Добрый день, Zbar и OPENCV картинку не считывают, не расшифровывают, выдает сообщение "cartinci net!". Ошибок не выдает
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.02.2024, 10:49
Ответы с готовыми решениями:

Распознание QR Код Zbar.pas
Добрый день. Кто нибудь подключал этот класс к проекту? Если подключали поделитесь опытом. Что у кого получилось из этого... Или как...

Библиотека ZBar Code Reader: сканирование и распознание QR-кода с вебкамеры ноутбука
Здравствуйте, пишу дипломный проект , на C#, необходимо реализовать сканирование и распознание QR-кода с вебкамеры ноутбука. Что...

ZBar bar code reader - Проект собирается, но штрих-код не распознается
Добрый день! Скачал библиотеку ZBar bar code reader - через Windows Installer - т.е. уже скомпилированную. Там есть готовый...

11
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
07.02.2024, 22:09
Цитата Сообщение от KirillNSK Посмотреть сообщение
C++
1
2
3
if (imageZbar.symbol_begin() == imageZbar.symbol_end()) {
        cout << "cartinci net!" << endl;
    }
А как он будет писать что-то другое, если конец началу не будет равен при размере больше 1?
Ну и в imageZbar ничего нет, соответственно. Потому что вы только создаёте его, а ничем не наполняете. Чего там сканировать? Размеры задали при создании, а данных туда не закинули. Сама картинка, к которой выше прописан путь и происходит её загрузка никак данные в этом коде не переносит в ваш imageZbar, который вы потом пытаетесь обработать.

Либо это вот и есть попытка переноса данных, но это какой-то сильно изощренный путь через указатель и приведение типов.. Оно так вообще может работать, вы проверяли после такого переноса вывести картинку хотя бы?
Цитата Сообщение от KirillNSK Посмотреть сообщение
C++
1
uchar* raw = (uchar*)imageGray.data;
1
3 / 3 / 0
Регистрация: 29.07.2016
Сообщений: 217
08.02.2024, 05:46  [ТС]
Пойду переделывать

Добавлено через 15 минут
Я нигде не нашёл мануала по Zbar, может подскажите что-нибудь?
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
08.02.2024, 14:30
Цитата Сообщение от KirillNSK Посмотреть сообщение
Я нигде не нашёл мануала по Zbar, может подскажите что-нибудь?
Цель у вас какая вообще? Я бы посоветовал выбрать то, на что хотя бы есть документация. Если вам надо qr коды считывать, то для этого наверняка есть много способов уже реализованных и точно с описанием как это работает
1
3 / 3 / 0
Регистрация: 29.07.2016
Сообщений: 217
08.02.2024, 17:25  [ТС]
Цель - простая). Простенькое приложение для чтения Qк кода.
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
09.02.2024, 02:08
Цитата Сообщение от KirillNSK Посмотреть сообщение
Простенькое приложение для чтения Qк кода
C картинки или с камеры? Да и если так посмотреть - а вам для чего? Для тренировки навыка или заказ? Или не нашли готового решения и пилите сами, а основная задача совсем в другом?

ПыСы: тыкайте по нику моему перед ответом, будет его ставить и мне будет уведомление об ответе
0
3 / 3 / 0
Регистрация: 29.07.2016
Сообщений: 217
09.02.2024, 08:40  [ТС]
Laborant666, Здравствуйте. Пилю сам для тренировки. Сначала чтение с картинки, потом - переделать на чтение с камеры. Впоследствии хочу портировать на андроид. Готовое решения я не искал, хочу сделать сам).
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
09.02.2024, 12:23
Цитата Сообщение от KirillNSK Посмотреть сообщение
Сначала чтение с картинки
Хорошо, у вас есть доступ к openCV - он позволяет прочитать картинку вплоть до каждого оттенка пикселя. Зачем zBar? (с ним я не знаком)
0
3 / 3 / 0
Регистрация: 29.07.2016
Сообщений: 217
09.02.2024, 15:05  [ТС]
Laborant666, а везде попались только такие варианты реализации, вот и попробовал.

Добавлено через 1 час 4 минуты
Laborant666, я правильно понял, что OpenCV - распознает картинки, расшифровать ничего не может?
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
09.02.2024, 16:18
Цитата Сообщение от KirillNSK Посмотреть сообщение
расшифровать ничего не может?
Если речь о расшифровке qr-кода - не может. Обработать, видоизменить, собрать данные картинки - может
1
3 / 3 / 0
Регистрация: 29.07.2016
Сообщений: 217
12.02.2024, 17:26  [ТС]
Laborant666,
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
#include <opencv2/features2d.hpp>
#include <opencv2/objdetect.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <zbar.h>
using namespace cv;
using namespace std;
using namespace zbar;
 
int main()
{
    
    ImageScanner ImScan;
    ImScan.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
    
    Mat img = imread("C:/Users/KirillNSK/Desktop/newcode.png", IMREAD_COLOR);
    if (!img.data) {
        cout << "Not image" << endl;
        system("pause");
        return 0;
    }
 
    Mat ImGray;
    cvtColor(img, ImGray, COLOR_RGB2GRAY); // Тут была ошибка
    int width = ImGray.cols;
    int height = ImGray.rows;
    uchar* raw = (uchar*)ImGray.data;
    Image ImZbar(width, height, "Y800", raw, width * height);
    ImScan.scan(ImZbar);
    Image::SymbolIterator symbol = ImZbar.symbol_begin();
    if (ImZbar.symbol_begin() == ImZbar.symbol_end()) {
        cout << "Enter the image" << endl;
    }
    for (; symbol != ImZbar.symbol_end(); ++symbol) {
        cout << "Type" << endl << symbol->get_type_name() << endl << endl;
        cout << "Code" << endl << symbol->get_data() << endl << endl;
    }
    imshow("Display window", img);
    waitKey(0);
    ImZbar.set_data(NULL, 0);
 
    return 0;
}
Заработал, дело было в конвертации цвета кода.
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
12.02.2024, 18:51
Цитата Сообщение от KirillNSK Посмотреть сообщение
Заработал, дело было в конвертации цвета кода.
ну или так, не знаю zBar, серый ему значит на вход нужен. Молодец, что разобрались сами
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2024, 18:51
Помогаю со студенческими работами здесь

Считать штрих-код при помощи библиотеки ZBar bar code reader
Есть библ &quot;ZBar bar code reader&quot;. Есть желание извлечь штрих-код с картинки. Не знаю как завести стандартный пример с Magick++.h, т.к. не...

OpenCV. Некорректное чтение бинарного файла
Здравствуйте. При использовании opencv (2.4.6) столкнулся со следующей особенностью (или багом). Имеются бинарные файлы (fits-файлы с...

Боты не видят js код
Возможно ли сделать что бы js код был виден ботами (google yandex)? Я использую Vue и при анализе ботом страницы там пусто.

ASUS RT-N65U - Устройства не видят домашний WiFi, но видят соседские, странное поведение
Роутер ASUS RT-N65U работал без вопросов 8 лет, последний месяц начались глюки. На борту есть 2.4 Ггц и 5 Ггц - 5 Ггц есть всегда, месяц...

SSD видят UEFI и Windows, но не видят некоторые программы
Приобрел новую мат. плату GIGABYTE B450M S2H - https://www.dns-shop.ru/product/395441f103f83332/materinskaa-plata-gigabyte-b450m-s2h/ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru