Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Непонятный глюк
     
    
Добавлено: 20.03.11 11:52
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     Лёха | Web-сайт: supersait16.ucoz.ru
 Лёха | Web-сайт: supersait16.ucoz.ru
      
       
  
Обьясните мне в чем тут дело,вроде написано всё верно,а выдает какой то бред,я уже и лог начал вести,вот кусок,посмотрите какой бред выдает : 
 
    
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
 Winand



Вопросов: 87
Ответов: 2795
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  20.03.11 12:56
       
    
       
  
 
    
R = X, G = Y, B = TR
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа: Winand
 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
 VbStarter

ICQ: 357911808 
Вопросов: 118
Ответов: 1340
      
 Web-сайт:  
 Профиль |  | #8
      
Добавлено:  25.03.11 21:35
       
    
       
  
вероятно
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа: AgentFire
 AgentFire



ICQ: 192496851 
Вопросов: 75
Ответов: 3178
      
 Профиль |  | #9
       
Добавлено:  25.03.11 22:41
       
    
       
  
я думаю, скорее, всем просто лень запускать твой код и ковыряться там
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа: VbStarter
 VbStarter

ICQ: 357911808 
Вопросов: 118
Ответов: 1340
      
 Web-сайт:  
 Профиль |  | #10
      
Добавлено:  26.03.11 14:15
       
    
       
  
точно
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 11 
      
Автор ответа: bobbina
 bobbina

Вопросов: 0
Ответов: 1
      
 Web-сайт:  
 Профиль |  | #11
      
Добавлено:  29.03.11 19:02
       
    
       
  
Я вообще не вдуплю о чем речь.