|
0 / 0 / 0
Регистрация: 15.09.2024
Сообщений: 5
|
|
Программа для векторизации битовых матриц15.09.2024, 12:33. Показов 1211. Ответов 15
здравствуйте, мне для учебной практики нужно написать простенький фоторедактор на С++, для ручной векторизации битовых матриц. я себе представляю его функционал так: использования битовых матриц в качестве фона (слоя для копирования), создание простых фигур, объединение простых фигур в сложные и сохранение их для повторного использования, сохранение векторных изображений в формате svg.
подскажите пожалуйста с чего начать, где посмотреть, что почитать, может стоит сменить язык. буду рад любой помощи.
0
|
|
| 15.09.2024, 12:33 | |
|
Ответы с готовыми решениями:
15
Программа для просмотра битовых потоков GPU для алгоритма векторизации изображения Использование векторизации для решения систем уравнений |
|
184 / 72 / 35
Регистрация: 09.05.2022
Сообщений: 387
|
||||||
| 15.09.2024, 19:09 | ||||||
Сообщение было отмечено aezakmier как решение
Решение
Прямо с места в карьер, да?
C++ для этого - как из пушки по воробьям. Но раз уж тебе для практики, то почему бы и нет. Садистские наклонности преподов я одобряю. Начни с библиотеки OpenCV - она тебе жизнь спасет. Для работы с SVG глянь на Cairo или Boost.GIL. А чтобы не изобретать велосипед с интерфейсом, возьми Qt или wxWidgets. Структуру данных для битовых матриц можешь сделать через std::vector<bool> или Boost.Dynamic_Bitset. Для векторных фигур - полиморфизм твой друг, создай базовый класс Shape и наследуйся от него. Почитай про паттерны проектирования, особенно Composite для сложных фигур. И да, версионный контроль осваивай, если не хочешь поседеть раньше времени. А вообще, может, стоит начать с чего попроще? Python с PyQt и Pillow? Там кода меньше, и нервов целее будешь. Добавлено через 3 минуты
Вот тебе базовый скелет. Тут есть абстрактный класс Shape, от которого наследуются конкретные фигуры (пока только Circle) и группа фигур (Group). Editor - это твой "холст", куда ты добавляешь фигуры. Это, конечно, еще не векторный редактор, а так, пальцем по воде. Но принцип ты уловишь: Полиморфизм для разных типов фигур. Паттерн Composite для групп фигур. std::unique_ptr для управления памятью (чтобы не подстрелить себя в ногу). Дальше тебе нужно: Добавить реальные координаты и отрисовку (OpenCV в помощь). Прикрутить GUI (Qt или wxWidgets). Реализовать сохранение в SVG (Cairo или что-то подобное). Добавить функции редактирования (перемещение, масштабирование и т.д.).
1
|
||||||
|
0 / 0 / 0
Регистрация: 15.09.2024
Сообщений: 5
|
|
| 15.09.2024, 20:08 [ТС] | |
|
спасибо большое! На самом деле выбор С++ это лично мой выбор. Так как в нём я чувствую себя более уверенным. Но для меня это не принципиально. Я был бы рад избавить себя от лишних проблем с помощью пайтон, но я не работал с ним, только основы пару лет назад изучил.
Насколько более простым будет решение поставленной задачи, если использовать пайтон, по сравнению с С++?
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 15.09.2024, 20:30 | |
|
karlhildekruger, зачем тут OPENCV ?
0
|
|
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,040
|
|
| 16.09.2024, 00:13 | |
|
opencv даёт отдельное окошко.
В него выводиться тип данных cv::Mat. Наверное от слова матрица. Между этими типами данных, возможны различные преобразования. Существуют различные функции для них. Или пересчёт в ручную. C++ будет, как бы для склейки всего этого безобразия. На окошко ставяться движки. Есть хук на мышь. Чего не хватает то можно зацепить из winapi. Кто любит ку те. То конечно. Я писал гуй на нём же. На opencv. Примерно вот такой вот стиль получился. Это два окошка opencv.
2
|
|
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,040
|
||||||||||||||||||||
| 16.09.2024, 00:40 | ||||||||||||||||||||
|
Вот такая мышь на нём. Всё до безобразия в ручную...
Это на окно с кнопками. А консоль я просто спрятал.
А колесо уже на winApi. Колеса я там не нашёл.
Добавлено через 2 минуты Может .png... Может .jpg...
Добавлено через 3 минуты А зачем там ку те не знаю. Добавлено через 3 минуты
0
|
||||||||||||||||||||
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,040
|
|
| 16.09.2024, 00:47 | |
|
final_file.mp4
Фоторедактор получаеться. Только не очень простенький. И не совсем до конца доделаный. Как бы это проще сказать. Такая субстанция. Чем больше отгребаешь, тем больше в ней тонешь.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 16.09.2024, 00:59 | |
|
Матрицы - это одно, абстрактные данные.
Канва и их (матриц) отрисовка - совсем другое. Фигуры и их композиции уже третье. Их(фигур/композиций) отрисовка/отображение на канве или матрице, уже четвертое. И так далее, не нужно вини Подключение OpenCV, не принесет ни простоты, ни радости, ни сбережение нервов. Его изучение и использование - не на один учебный проект.
0
|
|
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,040
|
|
| 16.09.2024, 01:10 | |
|
А как ты будешь на канве формы обрабатывать картинку?
На winApi что ли? Вообщем... Фсё фигня кроме пчёл. И пчёлы тоже фигня. Правда в том, что ни чего путного всё равно не напишешь.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 16.09.2024, 01:47 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 15.09.2024
Сообщений: 5
|
|
| 16.09.2024, 05:02 [ТС] | |
|
Мне нужно сделать копию пиксельного рисунка(в виде бытовой матрицы) с помощью векторной графики.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 16.09.2024, 10:19 | ||
|
Я (да и не только я, гугл в том числе) многого не знаю. Что такое битовая матрица ? И как она соотносится к растровому изображению и векторной графики одновременно ??? (выделенное зеленым, я знаю что такое)
0
|
||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
||
| 16.09.2024, 11:33 | ||
|
Если так, то сколько уже диссертаций на эту тему написано! и сколько ещё будет
0
|
||
|
0 / 0 / 0
Регистрация: 15.09.2024
Сообщений: 5
|
|
| 16.09.2024, 18:53 [ТС] | |
|
я в принципе уже решил задачу кое-как с помощью пайтона. мне к сожалению позже надо будет подкрутить нейронку. так что теперь только пайтон.
Добавлено через 2 минуты мне нужна по сути простая рисовалка векторами, нужно просто обвести пиксельный рисунок векторами и всё. потом уже для диплома подключить нейронку чтобы она этим занималась. может быть в конечном итоге получится даже обводить и более стожные рисунки или даже фото, повышая чёткость изображений не смотря на маштабирование. Добавлено через 1 минуту спасибо всем за участие бля годаря вам я смог начать дальше если возникнут сложности, то я задам вопрос в разделе пайтон.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 16.09.2024, 18:54 | |
|
0
|
|
|
617 / 375 / 67
Регистрация: 09.03.2016
Сообщений: 4,040
|
|
| 17.09.2024, 23:12 | |
|
0
|
|
| 17.09.2024, 23:12 | |
|
Помогаю со студенческими работами здесь
16
Ошибка в битовых сдвигах/битовых масках Программа для обработки матриц Программа для создания матриц Программа-калькулятор для матриц 2 × 2 Имеется программа для умножения матриц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|