PDA

View Full Version : تبدیل یک عکس به آرایه دو بعدی



bahar_engineer
یک شنبه 25 فروردین 1392, 21:19 عصر
سلام
من می خوام یک عکس رنگی رو بصورت یک آرایه دو بعدی از نوع double[,] تبدیل کنم

کد من اینه که عکس رو به عکس grayscale تبدیل می کنه ... می دونم که از getpixel می شه استفاده کرد اما اون نوع رو بصورت color به من می ده ... من می خوام double باشه و قابل تبدیل هم نیستند..



//Get image dimensions
int width = bit1.Width;
int height = bit1.Height;

//Declare the double array of RGB values to be read from "bitmap"
double[,] bnew1 = new double[width, height];

//Loop to read the data from the grayscale image into the double array
int i, j;
for (i = 0; i < width; i++)
{
for (j = 0; j < height; j++)
{
Color pixelColor = bit1.GetPixel(i, j);
double b = pixelColor.GetBrightness(); //the Brightness component
bnew1.SetValue(b, i, j);
}
}


به جای getbrightness() هر چیز دیگه هم که می ذارم عکس من در هر صورت رنگی نمی شه

حتی از این خط هم توی حلقه بصورت تنها استفاده کردم اما عکس رو سفید نشون می ده :



bnew1[i, j] = bit1.GetPixel(i, j).A + .299 * bit1.GetPixel(i, j).R + .587 * bit1.GetPixel(i, j).G + .114 * bit1.GetPixel(i, j).B;




بخش آلفای عکس رو هم برداشتم تفاوتی نکرد... نمی دونم این عددها اشتباه هستند ...؟
لطفا راهنمایی کنید کل اینترنت رو زیر پا گذاشتم پیدا نکردم

کد اول دقیقا عکس رنگی رو به آرایه ای از نوع دابل تبدیل می کنه اما وقتی دوباره اون دابل رو به عکس تبدیل می کنم عکس رو grayscale کرده و اون به خاطر getbrightness هست. لطفا راهنمایی کنید که چطور عکس رو بصورت رنگی در آرایه ای دو بعدی از نوع دابل تبدیل کنم ؟
ممنون