crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Andrewshkovskii
  опции профиля:
сообщение 6.12.2009, 19:12
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Суть задачи : пользователь рисует на виджете изображение, допустим, букву. Необходимо, после ввода, разбивать это изображения на квадраты, и получать pixmap этих квадратов.
Для чего :
Цитата
АЛГОРИТМ РАСПОЗНАВАНИЯ ОПТИЧЕСКИХ ОБРАЗОВ (СИМВОЛОВ), ОСНОВАННЫЙ НА ХЕММИНГОВОЙ МЕРЕ БЛИЗОСТИ

И собственно что ещё про это :
Цитата
Шаблоны распознаваемых M символов разбивают на растровые картинки размером 30Ч30. В том случае, если на ячейку накладывается символ, ей приписывают единицу, в противном случае - ноль (см. рис. 2).
Построенные для всех шаблонов распознаваемых символов двухмерные массивы преобразуются в одномерные массивы элементов, принимающие значения 0 или 1. Получение одномерного массива происходит путём обхода двухмерного массива слева направо и сверху вниз, начиная с верхнего левого угла .

Вот так вот это должно выглядеть.. http://el-niko.ru/lab/2/ (мой одногруппник)

Так вот.. подойдут ли для этой задачи следующие виджеты/классы : QGraphicsView/Scene, QPixmap (QImage) ?
Просто я в асисте не нашел способов преобразовать изображение в пиксмап, что бы было можно построить его пиксельную сетку..

Сообщение отредактировал Andrewshkovskii - 9.12.2009, 13:10
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 19)
SABROG
  опции профиля:
сообщение 6.12.2009, 19:38
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Чего-то его флешка ничего не распознает. Какую букву бы я ни выбрал всегда думает на T.
---
А разобрался, там надо рисовать по контуру буквы еще.

Сообщение отредактировал SABROG - 6.12.2009, 19:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.12.2009, 19:42
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(SABROG @ 6.12.2009, 22:38) *
Какую букву бы я ни выбрал всегда думает на T.
ты её мышкой нарисовать должен в левом нижнем поле, по подсказке (фоновая буква у которой можно яркость регулировать), или игнорируя подскаку.

П.С. вероятности в этой методе слишком близко лежат
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 6.12.2009, 19:47
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Господа, вы немного отошли от темы:) Так что насчет того, какие классы использовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 6.12.2009, 19:54
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Andrewshkovskii @ 6.12.2009, 19:47) *
Господа, вы немного отошли от темы:) Так что насчет того, какие классы использовать?

Прежде чем советовать надо сначала понять как это работает и как это можно будет реализовать. Пока я не нашел ничего, чтобы нельзя было реализовать с помощью QGraphicsView, с другой стороны 90% интерфейса это элементы управления и я не вижу смысла реализовывать это используя графическое представление, легче будет использовать обычные виджеты.

Цитата(Andrewshkovskii @ 6.12.2009, 19:12) *
что бы было можно построить его пиксельную сетку..


Если нужен попиксельный доступ, то это QImage.

Сообщение отредактировал SABROG - 6.12.2009, 19:59
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 6.12.2009, 23:08
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Но мне не совсем понятно как же придется отображать этот QImage на виджете? Всмысле, его же не добавишь в лайаут менеджер..?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 6.12.2009, 23:11
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Andrewshkovskii @ 6.12.2009, 23:08) *
Но мне не совсем понятно как же придется отображать этот QImage на виджете? Всмысле, его же не добавишь в лайаут менеджер..?

QLabel/paintEvent
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 6.12.2009, 23:19
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Через лейбл не пойдет, он не может "вставить в себя" QImage.
Разве что вставлять pixMap, а потом его уже конвертить в QImage. Только не понятно, можно ли "рисовать мышкой" на Pixmape?

Сообщение отредактировал Andrewshkovskii - 6.12.2009, 23:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 6.12.2009, 23:49
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Andrewshkovskii @ 6.12.2009, 23:19) *
он не может "вставить в себя" QImage.


myLabel->setPixmap(QPixmap::fromImage(myImage));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 6.12.2009, 23:54
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Да не..это-то понятно, но вопрос в том, можно ли отрисовывать path на pixmap'е. Ну загружу я в лейбл беленький pixmap.. смогу с него получить QImage, что бы потрошить по-пиксельно, но вот можно ли отрисовать?
Сразу извиняюсь за непонятливость, я сейчас болею и голова как будто деревянная..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 7.12.2009, 0:30
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Andrewshkovskii @ 6.12.2009, 23:54) *
Да не..это-то понятно, но вопрос в том, можно ли отрисовывать path на pixmap'е.


Классический пример Scribble Example. QLabel разве что только для отображения "Сеток пикселей"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 7.12.2009, 0:36
Сообщение #12


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Спасибо, буду курить:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.12.2009, 4:08
Сообщение #13


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


яб взял QWidget, в его наследнике, в событии рисования, рисовал бы QImage
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 8.12.2009, 14:36
Сообщение #14


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Набрал я интерфейс, сделал рисовалку..осталось разобраться с алгоритмом.Так вот, допустим, у меня есть QImage и его rect = 0,0,231,231, т.е она 231х231 пикселей, и как же мне её разбить на растровые картиночки по 30х30 пикселей, а потом их каким-то образом обработать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 9.12.2009, 13:10
Сообщение #15


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


написал..
Прикрепленные файлы
Прикрепленный файл  recognizer.zip ( 12.96 килобайт ) Кол-во скачиваний: 109
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.12.2009, 14:56
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Молодец. Чтобы небыло "китайщины" с getButtons() используй класс QButtonGroup. В группу кнопки можно поместить прямо из дизайнера.

    for(int i=0;i<diffVec.size();++i)
    {
        bufstr.replace(QString("%1"),diffVec[i].first);
        bufstr.replace(QString("%2"),QString::number(diffVec[i].second));
        lst << bufstr;
        bufstr="Думаю, %1 на %2%";
    }


Тут у тебя тоже жестоко :)

//resultModel.removeRows(0,resultModel.rowCount()); это лишнее, прошлая модель и так затрется сама
...
QStringList lst;
    for(int i=0;i<diffVec.size();++i)
    {
        lst << QString("Думаю, %0 на %1%").arg(diffVec[i].first).arg(diffVec[i].second);
    }


Если покопаться, то можно еще много чего найти. Короче есть куда стремиться :)

Сообщение отредактировал SABROG - 9.12.2009, 15:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 9.12.2009, 14:59
Сообщение #17


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Ну я не претендовал на годного программиста, мне ещё учиться и учиться..у нас в вузе не преподают нормальное программирование, все делфи да делфи..:/
А вообще хотелось бы услышать критику, просто без контроля/критики я фиг чему нормальному научусь..

Сообщение отредактировал Andrewshkovskii - 9.12.2009, 15:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.12.2009, 15:11
Сообщение #18


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


void recognizer::setConnections()
{
    connect(ui->clearButton,SIGNAL(clicked()),this,SLOT(clearPixmaps()));
    connect(ui->clearButton,SIGNAL(clicked()),this,SLOT(clearResults()));
    connect(ui->recognizeButton,SIGNAL(clicked()),this,SLOT(recognize()));
    for(int i=0;i<buttons.size();++i)
    {
        connect(buttons[i],SIGNAL(clicked()),this,SLOT(drawLetter()));
        connect(buttons[i],SIGNAL(clicked()),this,SLOT(clearInputField()));
    }
}


В принципе в этом коде 2 ошибки. Об одной я уже сказал, она уберет блок for(){} через QButtonGroup. Ручное соединение можно заменить на автоматическое таким образом:

void recognizer::on_clearButton_clicked()
{
//тут можно вызвать сразу clearPixmaps() и clearResults()
}

void recognizer::on_recognizeButton_clicked()
{
//аналогично, вызов recognize() или сразу вставить всё тело
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 9.12.2009, 15:51
Сообщение #19


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Спасибо за советы и критику!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.12.2009, 16:15
Сообщение #20


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Тему разделил: Как создать группу кнопок (buttonGroup) в Дизайнере?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 22.6.2025, 6:13