image processing, java, پردازش تصویر, پردازش تصویر در جاوا, جاوا

تبدیل تصویر رنگی به خاکستری در جاوا با OpenCV

تبدیل تصویر رنگی به خاکستری در جاوا با OpenCV

در این قسمت تیم کدگیت را با آموزش تبدیل تصویر رنگی به خاکستری در جاوا با OpenCV همراهی کنید. ابتدای این جلسه مروری بر کتابخانه OpenCV و کلاس Mat داشته و سپس کد تبدیل رنگی به خاکستری را به کمک این کتابخانه در جاوا پیاده سازی می‌کنیم. پیشنهاد می‌کنیم برای یادگیری بهتر این جلسه، آموزش‌های زیر را مطالعه نمایید:

کتابخانه 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

تصویر ورودی برای تبدیل RGB به GrayScale به صورت زیر است:

تبدیل تصویر رنگی به خاکستری در جاوا با OpenCV

برای تبدیل تصویر رنگی به خاکستری در جاوا ابتدا یک تصویر را می‌خوانیم:

Mat input = Imgcodecs.imread("baboon.png");

 در ادامه باید تصویر خروجی را ایجاد کنیم. برای این کار از Mat استفاده می‌کنیم:

Mat gray = new Mat();

در کلاس Imgproc متدی با نام cvtColor وجود دارد. این متد برای تبدیل فضای رنگی تصاویر استفاده می‌شود(مانند تبدیل تصاویر رنگی به خاکستری یا تبدیل تصاویر رنگی به HSV و …). حال با استفاده از کلاس Imgproc و متد cvtColor تبدیل را انجام می‌دهیم. متد cvtColor سه پارامتر تصویر ورودی، تصویر خروجی و نوع تبدیل را در ورودی می‌گیرد.

Imgproc.cvtColor(input, gray, Imgproc.COLOR_RGB2GRAY);

حال نوبت به نمایش تصویر است:

HighGui.imshow("Gray baboon", gray);
HighGui.imshow("Gray input baboon", grayinput);
HighGui.waitKey(0);

خروجی کد بالا به صورت زیر است:

تبدیل تصویر رنگی به خاکستری در جاوا با OpenCV

تبدیل تصویر رنگی به خاکستری به کمک Imgcodecs

در صورتی که نیاز باشد تصویر به صورت خاکستری خوانده شود می‌توان از کلاس Imgcodecs استفاده کرد.  کد زیر تصویر baboon.png را به صورت خاکستری خوانده و آن را در متغیر از کلاس Mat می‌ریزد:

Mat grayinput = Imgcodecs.imread
("baboon.png",Imgcodecs.IMREAD_GRAYSCALE);

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *