Автор
|
Тема: graphics, images, and... help!!!
|
Kolya Bokov |
опубликован 11-09-2001 02:06 MSK
Здарова, all! Помогите пожалуйста сделать следующую вещь: идёт чтение картинки, тра-ля-ля, ну в билдере например сделать :) Нудык вот... Нужно вот что: программа должна воспроизвести изображение графического файла (.bmp, .jpg, и т.д.) в виде машинной вышивки.Сложность заключается в нахождении оптимального алгоритма по которому будут нарастать швы и заполняться пространства. Т.к. нет общепринятого алгоритма или он нам просто неизвестен, то необязательно (на первой стадии), чтобы конечный итог (изображение графического файла) был сделан как его бы сделал профессиональный цифрователь. Но, результат должен быть приблизительно схожим. есть у кого-нибудь какие-нибудь идеи? Если есть - помогите пожалуйста, буду очень признателен... Вот например один из волнующих меня вопросов: как прочитать и выделить цвета в открытой и запихнутой в массив картинке? Уцветов есть свои коды или как это сделать? Ведь нужно перебирать массив в поиске определённого цвета, затем его выводить его на вышивке, затем дальше... и тд... так ведь?:) очень сложно, или невозможно делать шов для каждого единичного пикселя... что вы об этом думаете? и как вы понимаете значение слова "шов"?:) заранее огромное спасибо, надеюсь на вашу помощь!
|
Kostik
|
опубликован 11-09-2001 06:21 MSK
Есть очень не плохая библиотека Intel. Здесь список её функций: http://www.pentium.com.ru/software/products/perflib/ipl/iplapi.htm Как скачать, думаю, разберёшься, если она тебе вообще станет интересна. Возникнут реальные проблемы при реализацией - попытаюсь помочь. |
Kolya Bokov
|
опубликован 11-09-2001 23:34 MSK
Ну я вроде скачал её... установил... а что нужно сделать в билдере, чтобы её подключить ? Я в Tools->Environment Options->Libraries->Libraries path её добавил директорию, где у неё находятся файлы *.lib правильно ли я сделал? если да, то как теперь к этому обращаться из билдера? если нет, то как? спасибо за помощь. |
Kostik
|
опубликован 12-09-2001 06:02 MSK
В StdAfx.h добавлено #include <ipl.h> Project > Settings > Link > в графе Object/library modules добавляеш (если там уже что-то вписано добавь пробел)ipl.lib.В каталоге (что ты скачал)\Intel\plsuite\doc\ лежит файл iplqref.pdf почитай его (Для него нужен Acrobat reader). Там есть немного выдержек из исходников. Пробуй.
|
Kostik
|
опубликован 12-09-2001 07:13 MSK
Здесь лежит архив. Вес 13.8 МБ и файл Tmp.bmp .ftp://ftp.tomica.ru/upload/Murka/ Внутри есть *.avi, которую прога крутит. Это ренген-изображение сердца человека. Жмём на паузу, затем на Sistola или Diastola (без разницы): получили текущий кадр потока *.avi файла. Причём желательно выбрать наиболее внятное изображение, иначе пурга (пока). Ставим три точки с очередностью как на tmp.bmp и жмём Build. Если у проги крыжу не сорвало, то она должна при помощи фильтров и этих трёх точек найти сердце и выделить его. Вроде была и запись результата в *.bmp, но гд-ето потерял. Сам попробуй разобраться. Проект пока очень сырой и требует доработки, а меня попросили позаниматься другой темой, вот он уже несколько месяцев посто "лежит".
|
Kostik
|
опубликован 12-09-2001 07:25 MSK
Да! Я пишу на Visual C++ 6.00 , поэтому > Project > Settings > Link > для тебя не актуальна. |
Kolya Bokov
|
опубликован 12-09-2001 15:53 MSK
Project->Settings->Link это в Visual C++! Слушай а где добавлять в билдере? В Environment Options->Libraries... или в project->options->linker??? спасибо за помощь. |
Kostik
|
опубликован 13-09-2001 05:09 MSK
По теории: в Options->Libraries указываеш "где брать", ну а "что брать" тебе надо указать наверно в project->options->linker |
Kolya Bokov
|
опубликован 13-09-2001 18:28 MSK
Слушай, ты не мог бы меня проконсультировать насчёт написания этой проги, которая в сабже? Ну, например, как перевести в 16 цветов, как разделить цвета, записать как-то в массив и выводить по строкам определенные цвета? Если поможешь, я тебя просто боготворить буду :) Спасибо за помощь! |
m_fox
|
опубликован 14-09-2001 12:34 MSK
П№;%ец... Не прыгай выше головы. Научись сначала программировать немного, а потом уже приступай писать программы. Полно литературы посвящено твоей проблеме. Есть в конце концов наука "Обработка изображений". Тут надо решать конкретные проблемы, а не учить программировать на С. |
Kolya Bokov
|
опубликован 14-09-2001 23:31 MSK
Программировать на С/C++ я начал 2 года назад, так что кое-что умею :) а вот материалов по обработке изображений и по моей конкретной проблеме к сожалению не встречал :( :( |
m_fox
|
опубликован 15-09-2001 12:16 MSK
Ну тогда что стоит твой вопрос: "как разделить цвета, записать как-то в массив и выводить по строкам определенные цвета?". Какой-то бред.UCHAR *image=new UCHAR[nWidth*nHeight]; // масив под изображение nWidth X nHeight, байт на пиксел for(int i=nHeight;i>=0;i--) { for(int j=nWidth;j>=0;j--) { UCHAR c=image[i*nWidth+j]; // ал'я GetPixel(j,i); switch(c) { case 1: // цвет с номером 1 break; case 2: // цвет с номером 1 break; } } } delete[] image; Это пример для выбора каждого пикселя из масива. А чем тебе не понравился мой способ с GetNearestColor в одном из твоих прошлых вопросов?? |
Kolya Bokov
|
опубликован 15-09-2001 14:23 MSK
да, но как перевести изображение, например 256 цветов - в 16 цветов? |
Kostik
|
опубликован 15-09-2001 14:57 MSK
Братан. Слушай сюда. Ну так ведь нельзя в самом-то деле. Я же тебе всё дал. Ну прочитай *pdf, о котором я уже упоминал. Посмотри прогу, ссылку на которую я тебе тоже уже дал. Там есть функции, с помощью которых можно и Репина с Левитаном в задницу запихать.Да и вообще. Походи по сайтам с исходниками. На sources.ru есть где-то даже список таких. Если PURPE их подобающе оформил. Уверяю тебя, там всё есть. И Америку открывать не надо. "Звони" по конкретным вопросам. Успехов.
|