Страница: 1 |
Страница: 1 |
Вопрос: Непонятный глюк
Добавлено: 20.03.11 11:52
Автор вопроса: Лёха | Web-сайт:
Обьясните мне в чем тут дело,вроде написано всё верно,а выдает какой то бред,я уже и лог начал вести,вот кусок,посмотрите какой бред выдает :
R = 218 * 0 ,G = 199 * 0 ,B = 185 * 0
R = 1 , G = 1 , B = 0
R = 209 * 0 ,G = 191 * 0 ,B = 179 * 0
R = 1 , G = 1 , B = 0
R = 204 * 0 ,G = 184 * 0 ,B = 173 * 0
R = 1 , G = 1 , B = 0
R = 220 * 0 ,G = 202 * 0 ,B = 188 * 0
R = 1 , G = 1 , B = 0
R = 214 * -1 ,G = 196 * -1 ,B = 184 * -1
R = 1 , G = 1 , B = -214
R = 208 * 0 ,G = 192 * 0 ,B = 179 * 0
R = 1 , G = 1 , B = 0
R = 226 * 0 ,G = 207 * 0 ,B = 193 * 0
R = 1 , G = 1 , B = 0
R = 228 * 0 ,G = 209 * 0 ,B = 195 * 0
R = 1 , G = 1 , B = 0
R = 223 * 0 ,G = 207 * 0 ,B = 194 * 0
R = 1 , G = 1 , B = 0
R = 209 * 0 ,G = 191 * 0 ,B = 179 * 0
R = 2 , G = 1 , B = 0
R = 204 * 0 ,G = 184 * 0 ,B = 173 * 0
R = 2 , G = 1 , B = 0
как такое может быть?
вот сам код :
[CODE]
void Process_Convolution3x3(IMG * Pic, Matrix_3x3 M)
{
int TR, TG, TB;
int R, G, B;
UINT IDX;
FILE * f = fopen("log.txt","w");
for(int Y = 1;Y < Pic -> Height - 1;Y++)
{
for(int X = 1;X < Pic -> Width - 1;X++)
{
//Обрабатываем квадрат заданый матрицой
for(int Row = -1;Row < 2;Row++)
{
for(int Item = -1;Item < 2;Item++)
{
IDX = ((Y + Row) * Pic -> Width + (X + Item)) * Pic -> BytesPerPixel;
TR = *(Pic -> Data + IDX + Pic -> R_IDX);
TG = *(Pic -> Data + IDX + Pic -> G_IDX);
TB = *(Pic -> Data + IDX + Pic -> B_IDX);
if(X < 100 && Y < 100)
{
fprintf(f," R = %d * %d ,G = %d * %d ,B = %d * %d \n",TR,M.Mat[Row + 1][Item + 1] ,TG,M.Mat[Row + 1][Item + 1],TB,M.Mat[Row + 1][Item + 1]);
}
TR *= M.Mat[Row + 1][Item + 1];
TG *= M.Mat[Row + 1][Item + 1];
TB *= M.Mat[Row + 1][Item + 1];
if(X < 100 && Y < 100)
{
fprintf(f," R = %d , G = %d , B = %d \n",X,Y,TR,TG,TB);
}
R += TR;
G += TG;
B += TB;
}
}
IDX = (Y * Pic -> Width + X) * Pic -> BytesPerPixel;
R = (R / M.Divisor) + M.Offset;
G = (G / M.Divisor) + M.Offset;
B = (B / M.Divisor) + M.Offset;
*(Pic -> Data + IDX + Pic -> R_IDX) = Clamp(R, 0, 255);
*(Pic -> Data + IDX + Pic -> G_IDX) = Clamp(G, 0, 255);
*(Pic -> Data + IDX + Pic -> B_IDX) = Clamp(B, 0, 255);
}
}
fclose(f);
}
уже два дня маюсь,не могу понять в чем глюк!Помогите пождалуйста...
Заранее спасибо
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 20.03.11 12:56
R = X, G = Y, B = TR
Номер ответа: 2
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #2
Добавлено: 20.03.11 12:58
и вообще %d - это ж вроде double, а тут одни int
Номер ответа: 3
Автор ответа:
Захарка
Вопросов: 0
Ответов: 42
Профиль | | #3
Добавлено: 20.03.11 14:33
d - десятичное целое
i - десятичное целое со знаком
это если я в лекции ничего не напутал(
Номер ответа: 4
Автор ответа:
Лёха
Вопросов: 20
Ответов: 79
Web-сайт:
Профиль | | #4
Добавлено: 20.03.11 16:13
поменял на %i,а результат тот же самйы!Как он так криво умножает?
Номер ответа: 5
Автор ответа:
Лёха
Вопросов: 20
Ответов: 79
Web-сайт:
Профиль | | #5
Добавлено: 20.03.11 16:20
Winand,спасибо тебе огромное,а то я думаю,что хрень!
Номер ответа: 6
Автор ответа:
Лёха
Вопросов: 20
Ответов: 79
Web-сайт:
Профиль | | #6
Добавлено: 20.03.11 17:10
Счас я все исправил,теперь почти все работает,но для некоторых матриц это фильтр не работает,можете обьяснить почему?
Номер ответа: 7
Автор ответа:
Лёха
Вопросов: 20
Ответов: 79
Web-сайт:
Профиль | | #7
Добавлено: 25.03.11 21:07
Что никто не знает?
Номер ответа: 8
Автор ответа:
VbStarter
ICQ: 357911808
Вопросов: 118
Ответов: 1340
Web-сайт:
Профиль | | #8
Добавлено: 25.03.11 21:35
вероятно
Номер ответа: 9
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #9
Добавлено: 25.03.11 22:41
я думаю, скорее, всем просто лень запускать твой код и ковыряться там
Номер ответа: 10
Автор ответа:
VbStarter
ICQ: 357911808
Вопросов: 118
Ответов: 1340
Web-сайт:
Профиль | | #10
Добавлено: 26.03.11 14:15
точно
Номер ответа: 11
Автор ответа:
bobbina
Вопросов: 0
Ответов: 1
Web-сайт:
Профиль | | #11
Добавлено: 29.03.11 19:02
Я вообще не вдуплю о чем речь.