Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2015, 06:29   #1
WolfEater
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 21
По умолчанию [C++builder]Преобразование изображение в формат 4:2:0

Помогите, пожалуйста, добрые люди.
Нужно написать код в C++builder преобразование изображения в формат 4:2:0 (на каждые четыре пикселя яркости приходится два пикселя цветности).

Пытался сделать так:

Код:
int R,G,B;
BYTE* biImage;
int **U1; U1=new int*[H]; for(j=0; j<H; j++) U1[j]=new int[W];
int **V1; V1=new int*[H]; for(j=0; j<H; j++) V1[j]=new int[W];
for(i=0; i<H; i=i+2)
{
for(j=0; j<W; j=j+2)
{
U1[i/2][j/2]=(U[i][j]+U[i+1][j]+U[i][j+1]+U[i+1][j+1])/4;
V1[i/2][j/2]=(V[i][j]+V[i+1][j]+V[i][j+1]+V[i+1][j+1])/4;
}
}
for(i=0; i<H; i=i+2)
{
for(j=0; j<W; j=j+2)
{
U[i][j]=U1[i/2][j/2]; U[i+1][j]=U1[i/2][j/2];
U[i][j+1]=U1[i/2][j/2]; U[i+1][j+1]=U1[i/2][j/2];
V[i][j]=V1[i/2][j/2]; V[i+1][j]=V1[i/2][j/2];
V[i][j+1]=V1[i/2][j/2]; V[i+1][j+1]=V1[i/2][j/2];
}
}
for(i=0; i<H; i++)
{
biImage=(BYTE*)(Form1->Image2)->Picture->Bitmap->ScanLine[i];
for(j=0; j<W; j++)
{
R = Y[i][j] + 1.13983 * (V[i][j] - 128);
if(R>255) R=255; if(R<0) R=0;
G = Y[i][j] - 0.39465 * (U[i][j] - 128) - 0.58060 * (V[i][j] - 128);
if(G>255) G=255; if(G<0) G=0;
B = Y[i][j] + 2.03211 * (U[i][j] - 128);
if(B>255) B=255; if(B<0) B=0;
biImage[j*3+2]= R;
biImage[j*3+1]= G;
biImage[j*3] = B;
}
}
Form1->Image2->Refresh();
for(j=0; j<H; j++)
{
delete[] Y[j];
delete[] U[j]; delete[] V[j];
delete[] U1[j]; delete[] V1[j];
}
Но при компиляции выскакивает ошибка.
WolfEater вне форума Ответить с цитированием
Старый 15.02.2015, 09:58   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Но при компиляции выскакивает ошибка.
Я б на месте компилятора тебя тоже матом обложил за такой код.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 15.02.2015, 10:04   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Текст ошибки в студию )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.02.2015, 11:25   #4
WolfEater
Пользователь
 
Регистрация: 15.02.2015
Сообщений: 21
По умолчанию

Stilet
Вот что мне показывает компилятор:
E2451 Undefined symbol 'V'
E2451 Undefined symbol 'U'
E2451 Undefined symbol 'Y'

Если попытаюсь выделить для них динамический массив программа запуститься, но будет некорректно обрабатывать изображение. Может, есть другой код более простой, чем этот? Пытался найти безрезультатно, а по-другому написать даже и не знаю как.
WolfEater вне форума Ответить с цитированием
Старый 15.02.2015, 11:50   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вот что мне показывает компилятор:
Ну так верно. Где они описаны? Не вижу.
Цитата:
Если попытаюсь выделить для них динамический массив программа запуститься, но будет некорректно обрабатывать изображение.
И ты решил от них избавиться, чтоб программа не скомпилировалась, но обработала изображение правильно?
А ты откуда этот код то взял?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование чисел с плавающей точкой в буквенный формат Петр Петрович C# (си шарп) 2 26.06.2012 13:04
преобразование строки в изображение Lorden Общие вопросы Delphi 7 21.02.2011 15:12
VBA,преобразование в строковый формат DimR Помощь студентам 0 07.04.2010 23:03
преобразование отчёта Excel в XML формат Нозима Microsoft Office Excel 3 03.03.2010 06:47