Поиск:

Ответ в темуСоздание новой темы Создание опроса
> транспонирование изображения 
:(
    Опции темы
susanin
Дата 16.2.2007, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



нужен код, для транспонирования изображения.... точнее он есть вот такой....
Код

Processing->ShortCut;
  int J,JH,I,IH,mr,mg,mb;

  IH=Image1->Picture->Bitmap->Height;
  JH=Image1->Picture->Bitmap->Width;
  Image2->Picture->Bitmap->Width=JH;
  Image2->Picture->Bitmap->Height=IH;

     for(I =0; I <IH; I++)
     for(J = 0; J <JH; J++){
     //Попиксельное чтение
     mr=GetRValue(Image1->Canvas->Pixels[J][I]);
     mg=GetGValue(Image1->Canvas->Pixels[J][I]);
     mb=GetBValue(Image1->Canvas->Pixels[J][I]);
     // Преобразование
     //Ограничение динамического диапазона
     if (mr>289) mr=0;  else mr=mg;
     if (mr<0)   mr=289;    else mr=mg;
     if (mg>289) mg=0;  else mg=mg;
     if (mg<0)   mg=289;    else mg=mg;
     if (mb>289) mb=289;  else mb=mb;
     if (mb<0)   mb=0;    else mb=mb;

     Image2->Picture->Bitmap->Canvas->Pixels[I][J] = RGB(mr, mg, mb);

но этот код поворачивает картинку на 90 градусов влево...хотелось бы еще , чтобы она как то вправо поворачивалась.....помогите написать похожий код, только с поворотом направо

Это сообщение отредактировал(а) susanin - 16.2.2007, 23:02
PM MAIL   Вверх
Akeem
Дата 16.2.2007, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: 1
Всего: 3



вот алгоритм поворота для любой картинки.

пусть у нас есть картинка с размерами по горизонтали X и по вертикали Y.
Картинку поворачивать самое проще с помощью последовательных скосов.

типа :
 _____               _______
|          |            /            /
|          |   =>   /            / 
|_____|         /______/

Любой поворот описывается 3-мя скосами вот системы.

x1 = X +y1*d1
y1 = Y

y2 = y1 +x1*d2
x2=x1

x3 = x2+y2*d3
y3 = y2

x3 = X*cos(Alpha) - Y*sin(Alpha)
y3 = X*sin(Alpha) + Y*cos(Alpha)

неизвестные параметры d1, d2,d3 легко находятся подстановкой

d2 = sin(alaha)
d3 = d1 = (cos(alpha-1)/sin(alpha)

----------------------------------------------------------------------------------------------------

Один только минус этого сдвига, то что мы должны сдвигать на целое количество пикселей.

Твоя процедура поворота в лево хороша, но сильно ресурсоемкая. Моя же позволяет поворачивать изображение на любой заданный угол.  в право это пи/2, а в лево -пи/2

ЗЫ я думаю ты сможешь запрограммировать алгоритм. 


--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0383 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.