توی این پست قراره یه برنامه ساده با سی شارپ بنویسم و توش با نحوه کار با وب کم توی سی شارپ اشنا بشیم :)
اول از همه این که این رفرنس ها رو دانلود کنین و به پروژه تون اضافه کنین، بعد از اون using های زیر رو هم به اضافه کنین:
using AForge.Video;
using AForge.Video.DirectShow;
خب همون طور که از کد ها معلومه می خوایم از کتابخونه AForge استفاده کنیم، این کتابخونه کاربرد اصلیش برای کارهای هوش مصنوعی، بینایی ماشین، پردازش عصبی، پردازش تصاویر و این جور چیزاس که ایشالله بعدا که رفتیم تو فاز هوش مصنوعی بقیه کاربردهاشم با هم یاد میگیریم و برسی شون می کنیم.
کد های زیر رو هم همون اول پروژه تون بنویسین که بعدا باهاشون زیاد کار داریم:
public FilterInfoCollection webcam;
public VideoCaptureDevice camera;
برای دیزاین پروژه هم به موارد زیر نیاز دارین:
3 تا باتن
1 پیکچر باکس
1 کمبو باکس
1 لیبل
1 سیو دیالوگ
و دیزاین پروژه من هم شده یه چیزی توی مایه های این:
دیگه خودتون هر جور دوست دارین خوشگلش کنین.
خب بریم سراغ کد نویسی، اول از همه یه دابل کلیک روی فرم بکنین و توی فرم لود کد های زیر رو بنویسین:
webcam = new FilterInfoCollection(FilterCategory.VideoInputDevice);
foreach (FilterInfo device in webcam)
{
combox.Items.Add(device.Name);
}
combox.SelectedItem = 0;
توی این کد ها لیست دستگاه های ورودی ویدئویی رو با یه حلقه فورایچ توی ایتم های کمبو باکس ادد می کنیم و کاربر می تونه وب کمی که می خواد رو از توی ایتم ها انتخاب کنه.
یه متد درست کنین:
void cam_frame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bit = (Bitmap)eventArgs.Frame.Clone();
picbox.Image = bit;
}
و برای دکمه استارت هم کدهای زیر رو بنویسین:
try { camera = new VideoCaptureDevice(webcam[combox.SelectedIndex].MonikerString); camera.NewFrame += new NewFrameEventHandler(cam_frame); camera.Start(); } catch(Exception er) { MessageBox.Show(er.Message, "ErroR"); }
پ ن: ایشالله اگه شد یه پست هم در مورد دستکاری پیکسل های تصویر با bitmap میزارم براتون :)
برای دکمه stop هم کد های زیر رو بنوسین:
if (camera.IsRunning)
{
camera.Stop();
}
else
{
MessageBox.Show("Camera is not runing", "ErroR");
}
و برای دکمه عکس گرفتن هم کد زیر رو بنویسین:
SaveFileDialog save = new SaveFileDialog();
saveFileDialog1.InitialDirectory = @"c:\";
saveFileDialog1.Filter = "JPeg Image|*.jpg|Png Image|*.png";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
picBox.Image.Save(saveFileDialog1.FileName);
}
توی کد های بالا هم کار خاصی نکردیم فقط با یه سیو دیالوگ، عکس ها رو توی سیستم ذخیره می کنیم.
و تمام!
می تونین یه کمی کد ها رو تغییر بدین و توی بدافزارها و ویروس های دست نویس خودتون بزارین تا از کاربر یه چند تا عکس خوشگل هم داشته باشین.
سئوالی، پیشنهادی، مشکلی چیزی بود توی کامنتا بگین!
سلام یک کمکی میکنید من میخوام یک برنامه بسازم با نصبش تو گوشی هم حافظه داخلی و هم رمش یا همون حافظه خارجیش پاک بشه اینو با چی بسازم با لینوکس ؟ کد ؟ یک کمکی میکنی ؟