//using System.Drawing;
/* picture - источник*/
Bitmap bitmap = new Bitmap(picture.Width,picture.Height);
const Single R_coeff = 0.3;
const Single G_coeff = 0.59;
const Single B_coeff = 0.11;
for(Int32 y=0;y<bitmap.Height;y++)
for(Int32 x=0;x<bitmap.Width;x++)
{
Color color=picture.GetPixel(x,y);
Int32 gray = Convert.ToInt32(color.R*R_coeff+color.G*G_coeff+color.B*B_coeff);
bitmap.SetPixel(x,y,Color.FromArgb(gray,gray,gray));
}
MemoryStream stream = new MemoryStream();
bitmap.Save(stream, ImageFormat.Jpeg);
Int32 lenth = Convert.ToInt32(stream.Length);
Byte[] bite_array = new Byte[lenth];
stream.Read(bite_array, 0, lenth);
Массив из изображения
Суть проблемы следующая, нужно получить массив значений из цветного изображения. Значения должны быть типа 0-1, тоесть чёрный или белый.
Как так?? Цветное изображение содержит не только чёрный и белый. Или тебе нужно получить из цветного чёрно-белое изображение??
Цитата: 3A3-968M
Как так?? Цветное изображение содержит не только чёрный и белый. Или тебе нужно получить из цветного чёрно-белое изображение??
Нужно из цветного получить чёрно-белое, и загнать его в массив.
Код:
for (Int32 i=0; i<lenth; i++)
if (bite_array>128) bite_array=255;
else bite_array=0;
MemoryStream out_stream= new MemoryStream();
out_stream.Write(bite_array,0,lenth);
Bitmap out_bitmap= new Bitmap(out_stream);
//******************************************
out_lenth=lenth/3;
Byte[] out_bite= new Byte[out_lenth];
for(Int32 i=0; i<out_lenth; i++)
if (bite_array[3*i] == 255) out_bite=1;
else out_bite=0;
if (bite_array>128) bite_array=255;
else bite_array=0;
MemoryStream out_stream= new MemoryStream();
out_stream.Write(bite_array,0,lenth);
Bitmap out_bitmap= new Bitmap(out_stream);
//******************************************
out_lenth=lenth/3;
Byte[] out_bite= new Byte[out_lenth];
for(Int32 i=0; i<out_lenth; i++)
if (bite_array[3*i] == 255) out_bite=1;
else out_bite=0;
Ток оптимизируй ужж как нить сам...
За то что эт работает не отвечаю- но поправить не проблема....если есть ошибки...
Код:
//******************************************
out_lenth=lenth/3;
Boolean[] out_bite= new Boolean[out_lenth];
for(Int32 i=0; i<out_lenth; i++)
if (bite_array[3*i] == 255) out_bite=true;
else out_bite=false;
out_lenth=lenth/3;
Boolean[] out_bite= new Boolean[out_lenth];
for(Int32 i=0; i<out_lenth; i++)
if (bite_array[3*i] == 255) out_bite=true;
else out_bite=false;
Выражался б яснее чо требуеться.....а вдруг у тя начальная картинка индексная- тогда я зря всё эта катал....
Спасибо большое )))