در این قسمت تیم کدگیت را با آموزش خواندن تصاویر در سی شارپ همراهی کنید. در این آموزش ابتدا کلاسها و کتاب خانه هایی که سی شارپ برای کار با تصاویر آماده کرده است را معرفی میکنیم و سپس به پیاده سازی مثالی از آنها میپردازیم. پیش نیاز این آموزش شامل موارد زیر است:
پردازش تصویر
پردازش تصاویر امروزه بیشتر به موضوع پردازش تصویر دیجیتال گفته میشود که شاخهای از دانش رایانه است که با پردازش سیگنال دیجیتال که نماینده تصاویر برداشته شده با دوربین دیجیتال یا پویش شده توسط پویشگر هستند سر و کار دارد.
پردازش تصاویر دارای دو شاخه عمده بهبود تصاویر و بینایی ماشین است. بهبود تصاویر دربرگیرنده روشهایی چون استفاده از فیلتر محوکننده و افزایش تضاد برای بهتر کردن کیفیت دیداری تصاویر و اطمینان از نمایش درست آنها در محیط مقصد (مانند چاپگر یا نمایشگر رایانه)است، در حالی که بینایی ماشین به روشهایی میپردازد که به کمک آنها میتوان معنی و محتوای تصاویر را درک کرد تا از آنها در کارهایی چون رباتیک و محور تصاویر استفاده شود.
خواندن تصاویر در سی شارپ
برای خواندن تصاویر ما از کلاس Bitmap استفاده میکنیم. این کلاس برای پردازش تصویر مناسب میباشد. گرچه کلاس دیگری به نام Image نیز وجود دارد که میتوان با استفاده از آن تصاویر را خواند (مطالعه کلاس Image بر عهده شما میگذاریم). کلاس Bitmap متدی به نام GetPixel دارد که رنگ پیکسل ورودی را به ما میدهد. همچنین برای دادن آدرس فایل از Constructor استفاده میکنیم. کد این مثال به صورت زیر میباشد:
public static void Main (string[] args)
{
Bitmap myBitmap = new Bitmap("my Image.jpg");
int width = myBitmap.Width;
int height = myBitmap.Height;
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
Color pixelColor = myBitmap.GetPixel(x, y);
Console.Write (pixelColor.R+" ");
}
Console.WriteLine ();
}
Console.ReadKey();
}
همانطور که در کد بالا میبینید یک فایل را با استفاده از Bitmap خوانده (آدرس فایل خود را بجای My image.jpg قرار دهید) و سپس با بدست آوردن طول و عرض تصویر (Width و height)، تک تک پیکسلهای تصویر را دریافت و رنگ آنها را میخوانیم. در آخر رنگ قرمز آنها ( همانطور که میدانید هر تصویر شامل سه رنگ قرمز، سبز و آبی است) را چاپ کردیم. تصویر ورودی ما شکل زیر میباشد:

خروجی برنامه به شکل زیر میباشد:
255 255 255 255 255 255 242 253 255 254 254 255 254 255 255 255
254 255 254 255 255 246 247 254 254 255 255 255 253 255 255 254
255 255 254 255 253 241 239 241 242 240 242 241 241 239 245 255
255 255 255 254 242 249 255 255 255 255 255 255 255 254 243 254
254 255 253 249 245 255 255 251 254 254 254 254 255 254 242 255
253 255 251 242 254 253 255 255 255 255 254 255 255 255 242 254
255 253 243 253 254 255 255 255 248 243 243 242 243 239 245 255
255 246 246 254 254 255 255 255 249 248 255 255 252 255 241 255
254 247 249 255 254 255 255 252 247 248 255 254 252 255 241 255
255 254 240 254 254 255 255 255 249 243 242 242 243 241 244 255
255 253 247 241 254 254 255 255 255 255 254 255 255 255 243 253
252 246 245 242 248 254 253 253 255 254 254 254 255 254 242 255
254 248 250 253 246 251 255 253 255 255 255 254 255 254 243 254
254 248 241 241 242 238 241 241 241 240 242 240 240 239 245 255
252 255 255 255 254 245 248 255 254 255 255 255 254 255 255 254
255 255 255 254 255 255 240 253 255 254 254 255 254 255 255 255