در این قسمت تیم کدگیت را با آموزش خواندن تصاویر در جاوا با opencv همراهی کنید. در ابتدای جلسه کتابخانه opencv را معرفی سپس به کمک این کتابخانه تصویری را خوانده و آن را نمایش میدهیم. پیشنهاد میکنیم برای درک بهتر مفاهیم این جلسه، آموزشهای زیر را مطالعه کنید:
- خواندن تصاویر در جاوا
- تبدیل سبز رنگ در جاوا
- تبدیل آبی رنگ در جاوا
- تبدیل قرمز رنگ در جاوا
- فیلتر مینیمم در جاوا
- فیلتر ماکزیمم در جاوا
- فیلتر میانه در جاوا
- فیلتر میانگین در جاوا
کتابخانه OpenCV
OpenCV یا همان Open Computer Vision مجموعه ای از کتابخانههای برنامهنویسی پردازش تصویر و یادگیری ماشین است. این کتابخانه با داشتن توابع مختلف در زمینه پردازش تصویر، فرآیندهای کار بر روی تصاویر را بسیار آسان نموده است.برای پیاده سازی کد خواندن تصاویر در جاوا از کتابخانه opencv استفاده خواهیم کرد. برای استفاده از این کتابخانه ابتدا باید آن را فراخوانی کرد. کد زیر بارگذاری کتابخانه opencv در جاوا میباشد:
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
کلاس Mat
کلاس Mat برای ذخیره سازی و نگهداری مقادیر یک تصویر تک و یا چند کاناله (تصاویر grayscale تک کاناله و تصاویر رنگی چند کاناله هستند) استفاده میشود. این کلاس نمایشی از آرایه n بعدی است که میتوان برای ذخیره تصاویر، ماتریس و … نیز از آن استفاده کرد. در کد زیر با استفاده از کلاس Mat یک ماتریس با ابعاد 3*3 ایجاد کردیم(cv_type برای depth و کانال تصویر استفاده می شود و در مثال زیر تک کانال استفاده شده است):
Mat mat = Mat.zeros(3, 3, CvType.CV_8UC1);
برای چاپ ماتریس بالا میتوان از متد dump استفاده کرد:
System.out.println("mat = " + mat.dump());
خروجی کد به صورت زیر است:
mat = [ 0, 0, 0;
0, 0, 0;
0, 0, 0]
خواندن تصاویر در جاوا با opencv
برای خواندن تصاویر از کلاس Imgcodecs و متد imread استفاده میکنیم. این متد در ورودی یک رشته به عنوان آدرس فایل دریافت میکند. در کد زیر تصویر لوگوی وبسایت کدگیت به کمک کتابخانه opencv خواندیم(تصویر لوگو وبسایت کدگیت در فولدر این پروژه قرار دارد):
Mat image = Imgcodecs.imread("codegate.jpg");
برای نمایش تصویر خوانده شده میتوان از کلاس HighGUI و متد imshow استفاده کرد.
HighGui.imshow("codegate logo", image);
HighGui.waitKey(0);
System.exit(0);
خروجی کد بالا به صورت زیر میباشد:
