PDA

View Full Version : سوال: خواندن نقاط غیر سفید یک عکس



ranin_5101
شنبه 20 تیر 1388, 18:20 عصر
با عرض سلام خدمت اساتید محترم

نوی برنامم میخوام یک image رو بخونم و تعداد نقاط غیر سفیدش رو پیدا کنم اندازه عکس هم مختلف هستش و با پسوند bmp هستش

در حال حاظر من عکس رو می خونم و داخل یک آرایه میریزم و از خونه 54 به بعد 3 نا 3 تا می خونم تو بعضی از سایز ها جواب میده تو بعضی دیگه جواب نمیده این مسئله واقعا منو گیج کرده

سرعت هم برام مهمه و نمی خوام از getpixel استفاده کنم

hozouri
دوشنبه 22 تیر 1388, 17:38 عصر
خب از Thread استفاده نمایید و مثلاً هر 100 خونه رو با یه Thread بخون

ranin_5101
سه شنبه 23 تیر 1388, 00:22 صبح
ممنون از راهنماییتون ولی اون راهش نیست من می خوام صفحه رو پیمایش کنم که مساحت یک سری اشکالی که تو صفحه قرار دارند رو بدست بیارم

hozouri
سه شنبه 23 تیر 1388, 13:44 عصر
ببینید توی فتوشاپ وقتی قراره براساس رنگ یا حالا چیزهای دیگه قسمتی از عکس انتخاب بشه یه الگوریتم داره البته برای رنگ به همین صورتی که در بالا هم گفتم شما فکر می کنید Pixel به Pixel می خونن با روشی غیر از Thread ها می خونن ؟؟؟

ranin_5101
سه شنبه 23 تیر 1388, 14:31 عصر
من هم میخوام Pixel به pixel بخونم ولی از get pixel نمی خوام استفاده کنم چون زمان میبره
راهی به جز get pixel بلدین

البته عکس رو به صورت آرایه ذخیره کردم اونجوری سرعت بالایی داشتم ولی تو عکس های بزرگ جواب درستی بهم نمی داد در سایز کوچیک خوب کار میکرد


برای من فضا مهم نیست فقط سرعت مهمه

hozouri
سه شنبه 23 تیر 1388, 15:35 عصر
البته عکس رو به صورت آرایه ذخیره کردم اونجوری سرعت بالایی داشتم ولی تو عکس های بزرگ جواب درستی بهم نمی داد در سایز کوچیک خوب کار میکرد


میشه بگید چه طور ؟؟؟

با Stream و Byte یا روشی دیگه ؟؟؟

ranin_5101
چهارشنبه 24 تیر 1388, 13:11 عصر
این کدی هستش که من استفاده می کنم ولی تو عکس های کوچیک اشباه انجام میده تو سایز بزرگ خوب کار می کنه


OpenFileDialog o = new OpenFileDialog();
o.ShowDialog();
MemoryStream m = new MemoryStream();
Bitmap p = new Bitmap(o.FileName);
p.Save(m, System.Drawing.Imaging.ImageFormat.Bmp);
m.Position = 54;
for (int i = 54; i < m.Length; i+=3)
{
int tmp = 0;
tmp = m.ReadByte() + m.ReadByte() + m.ReadByte();
if (tmp < 760)
{
m.Position = i;
m.WriteByte(0);
m.WriteByte(0);
m.WriteByte(0);
}
}
p = new Bitmap(m);
p.Save("e:/ali.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
pictureBox1.Image = p;
}
}