Russian Qt Forum
Ноябрь 25, 2024, 17:22
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Динамические массивы для хранения изображений
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Динамические массивы для хранения изображений (Прочитано 11041 раз)
ShiroExorcist
Гость
Динамические массивы для хранения изображений
«
:
Февраль 13, 2017, 22:01 »
Добрый вечер! При реализации задачи по обработке двух пар изображений разрешением 640х480 появилась необходимость увеличить поля изображение на половину матрицы свёртки, написал три простые функции для этого. Конечное монохромное изображение хранится в трёх динамических двумерных массивах. И вот возникла проблема при таком разрешении изображений и матрице размером 30х30 программа иногда вылетает с кодом завершения 255. С небольшими изображениями программа работает стабильно, как можно решить проблему? Версия Qt 5.6.2 (MinGW 4.9.2).
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Динамические массивы для хранения изображений
«
Ответ #1 :
Февраль 13, 2017, 22:04 »
запустить в отладчике, глянуть, где вылетело?
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
ShiroExorcist
Гость
Re: Динамические массивы для хранения изображений
«
Ответ #2 :
Февраль 13, 2017, 22:20 »
отладчик ни чего не выдаёт, программа тупо вылетает
Записан
ShiroExorcist
Гость
Re: Динамические массивы для хранения изображений
«
Ответ #3 :
Февраль 13, 2017, 23:51 »
Цитата: Racheengel от Февраль 13, 2017, 22:04
запустить в отладчике, глянуть, где вылетело?
Удалось поймать ошибку. Выдаёт sigsegv segmentation fault на строке
leftLbl->setPixmap(QPixmap::fromImage(img));
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Динамические массивы для хранения изображений
«
Ответ #4 :
Февраль 14, 2017, 08:10 »
leftLbl существует?
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ShiroExorcist
Гость
Re: Динамические массивы для хранения изображений
«
Ответ #5 :
Февраль 14, 2017, 08:20 »
Да leftLbl существует и программа работает с изображениями меньшими по разрешению, правда иногда тоже вылетает
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Динамические массивы для хранения изображений
«
Ответ #6 :
Февраль 14, 2017, 08:58 »
А c
img
ничего плохого не происходит?
Добавьте логирование
img
перед
leftLbl->setPixmap(QPixmap::fromImage(img));
(а лучше везде поставить логирование)
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
ShiroExorcist
Гость
Re: Динамические массивы для хранения изображений
«
Ответ #7 :
Февраль 14, 2017, 09:27 »
В img записываются значения от 0 до 255, потом оно записывается в label
Отладчик пишет, что ошибка в Z29qt_convert_rgb888_to_rgbx8888PjPKhi
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Динамические массивы для хранения изображений
«
Ответ #8 :
Февраль 14, 2017, 09:35 »
Интересная функция вызывается: qt_convert_rgb888_to_rgbx8888
Покажите конструктор, вызываемый для img
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
ShiroExorcist
Гость
Re: Динамические массивы для хранения изображений
«
Ответ #9 :
Февраль 14, 2017, 09:59 »
QImage img(tempLeft, Wmax, Hmax, Wmax, QImage::Format_Indexed8);
QVector <QRgb> color_table;
For(int i=0; i<256; i++)
color_table.append(qRgb(i,i,i));
img.setColorTable(color_table);
tempLeft одномерный массив хранящий интенсивность
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Динамические массивы для хранения изображений
«
Ответ #10 :
Февраль 14, 2017, 10:59 »
Приложите тогда, пожалуйста, минимальный проект с проблемой
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Динамические массивы для хранения изображений
«
Ответ #11 :
Февраль 14, 2017, 11:48 »
Цитата: ShiroExorcist от Февраль 13, 2017, 22:01
При реализации задачи по обработке двух пар изображений разрешением 640х480 появилась необходимость увеличить поля изображение на половину матрицы свёртки, написал три простые функции для этого. Конечное монохромное изображение хранится в трёх динамических двумерных массивах.
Матрица свертки - а что это? Монохромное изображение - ну наверное пыксель может быть только 0 или 1. Тогда зачем хранить его в 3 динамических двумерных? И кто такие эти "массивы" - какие контейнеры?
Ой, наверное всем остальным все это понятно, ведь они не задают таких вопросов
Записан
ShiroExorcist
Гость
Re: Динамические массивы для хранения изображений
«
Ответ #12 :
Февраль 14, 2017, 11:53 »
Матрица свёртки это изображение которое будет умножаться на пиксели исходных изображений.
Монохромное изображение тоесть изображение в оттенках серого от 0 до 255, левое изображение в оттенках серого в одном массиве, правое в другом, а в третьем сама матрица свёртки.
Записан
ShiroExorcist
Гость
Re: Динамические массивы для хранения изображений
«
Ответ #13 :
Февраль 14, 2017, 13:26 »
В архиве, помимо проекта, два изображения LM1 и m1, LM1 необходимо загрузить как правое и левое изображение, m1 матрица свёртки. Как только в диалоге выбирается матрица свёртки происходит выполнение функций, переводящих изображения в оттенки серого. Программа не всегда вылетает с ошибкой, для 100% получения ошибки необходимо в качестве свёртки загрузить так же LM1 вместо m1.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Динамические массивы для хранения изображений
«
Ответ #14 :
Февраль 14, 2017, 19:06 »
"изображение в оттенках серого от 0 до 255" - это уже не монохромное, это 256 цветов
По коду сложно что-то сказать (он Write Only), но скорее всего, у Вас банально вылет за границу массива в одном из if-циклов. Дебагать надо.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...