در این قسمت تیم کدگیت را با آموزش خواندن و نوشتن تصاویر در جاوا (پردازش تصویر) همراهی کنید. در این آموزش ابتدا کلاسها و کتاب خانه هایی که جاوا برای کار با تصاویر آماده کرده است را معرفی میکنیم و سپس به پیاده سازی مثالی میپردازیم. پیش نیاز این آموزش شامل موارد زیر است:
پردازش تصویر
پردازش تصاویر امروزه بیشتر به موضوع پردازش تصویر دیجیتال گفته میشود که شاخهای از دانش رایانه است که با پردازش سیگنال دیجیتال که نماینده تصاویر برداشته شده با دوربین دیجیتال یا پویش شده توسط پویشگر هستند سر و کار دارد.
پردازش تصاویر دارای دو شاخه عمده بهبود تصاویر و بینایی ماشین است. بهبود تصاویر دربرگیرنده روشهایی چون استفاده از فیلتر محوکننده و افزایش تضاد برای بهتر کردن کیفیت دیداری تصاویر و اطمینان از نمایش درست آنها در محیط مقصد (مانند چاپگر یا نمایشگر رایانه)است، در حالی که بینایی ماشین به روشهایی میپردازد که به کمک آنها میتوان معنی و محتوای تصاویر را درک کرد تا از آنها در کارهایی چون رباتیک و محور تصاویر استفاده شود(ویکیپدیا).
خواندن و نوشتن تصاویر در جاوا
برای اینکه یک تصویر را در جاوا بخوانیم از فایل باید استفاده کرد. کلاسی به نام BufferedImage برای کنترل و کار با تصاویر در جاوا وجود دارد. ما با استفاده از این کلاس یک تصویر را میخوانیم. همچنین با استفاده از همین کلاس یک فایل jpg را میسازیم. کلاس ImageIO در جاوا برای خواندن و نوشتن عکس استفاده میشود. ما با استفاده از این کلاس یک عکس را میخوانیم. خروجی این کلاس یک شی از جنس BufferedImage است. کد خواندن و نوشتن تصاویر در جاوا به صورت زیر میباشد:
public class ReadWriteImage {
public static void main(String[] args) {
int width = 512; // width of the image
int height = 512; // height of the image
BufferedImage image = null;
try {
File input_file = new File("baboon.png"); // image file path
image = ImageIO.read(input_file);
System.out.println("Reading Compelete");
} catch (IOException e) {
e.printStackTrace();
}
// WRITE IMAGE
try {
// Output file path
File output_file = new File("Output.jpg");
// Writing to file taking type and path as
ImageIO.write(image, "jpg", output_file);
System.out.println("Writing complete.");
} catch (IOException e) {
System.out.println("Error: " + e);
}
}
}
در کد بالا ما یک تصویر به نام baboon.jpg را خوانده و دوباره همان عکس را با نام Output.jpg ایجاد کردیم. ImageIO.read یک ورودی فایل تصویر را گرفته و آن را میخواند. ImageIO.write یک BufferedImage و فایل برای نوشتن تصویر دریافت میکند.