خواندن نقاط غیر سفید یک عکس
با عرض سلام خدمت اساتید محترم
نوی برنامم میخوام یک image رو بخونم و تعداد نقاط غیر سفیدش رو پیدا کنم اندازه عکس هم مختلف هستش و با پسوند bmp هستش
در حال حاظر من عکس رو می خونم و داخل یک آرایه میریزم و از خونه 54 به بعد 3 نا 3 تا می خونم تو بعضی از سایز ها جواب میده تو بعضی دیگه جواب نمیده این مسئله واقعا منو گیج کرده
سرعت هم برام مهمه و نمی خوام از getpixel استفاده کنم
نقل قول: خواندن نقاط غیر سفید یک عکس
خب از Thread استفاده نمایید و مثلاً هر 100 خونه رو با یه Thread بخون
نقل قول: خواندن نقاط غیر سفید یک عکس
ممنون از راهنماییتون ولی اون راهش نیست من می خوام صفحه رو پیمایش کنم که مساحت یک سری اشکالی که تو صفحه قرار دارند رو بدست بیارم
نقل قول: خواندن نقاط غیر سفید یک عکس
ببینید توی فتوشاپ وقتی قراره براساس رنگ یا حالا چیزهای دیگه قسمتی از عکس انتخاب بشه یه الگوریتم داره البته برای رنگ به همین صورتی که در بالا هم گفتم شما فکر می کنید Pixel به Pixel می خونن با روشی غیر از Thread ها می خونن ؟؟؟
نقل قول: خواندن نقاط غیر سفید یک عکس
من هم میخوام Pixel به pixel بخونم ولی از get pixel نمی خوام استفاده کنم چون زمان میبره
راهی به جز get pixel بلدین
البته عکس رو به صورت آرایه ذخیره کردم اونجوری سرعت بالایی داشتم ولی تو عکس های بزرگ جواب درستی بهم نمی داد در سایز کوچیک خوب کار میکرد
برای من فضا مهم نیست فقط سرعت مهمه
نقل قول: خواندن نقاط غیر سفید یک عکس
نقل قول:
نوشته شده توسط
ranin_5101
البته عکس رو به صورت آرایه ذخیره کردم اونجوری سرعت بالایی داشتم ولی تو عکس های بزرگ جواب درستی بهم نمی داد در سایز کوچیک خوب کار میکرد
میشه بگید چه طور ؟؟؟
با Stream و Byte یا روشی دیگه ؟؟؟
نقل قول: خواندن نقاط غیر سفید یک عکس
این کدی هستش که من استفاده می کنم ولی تو عکس های کوچیک اشباه انجام میده تو سایز بزرگ خوب کار می کنه
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;
}
}