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

نوشتن تصاویر در جاوا با OpenCV

نوشتن تصاویر در جاوا با OpenCV

در این قسمت تیم کدگیت را با آموزش نوشتن تصاویر در جاوا با OpenCV همراهی کنید. در این جلسه مروری بر کتابخانه OpenCV و کلاس Mat خواهیم داشت. در ادامه یک تصویر را با کمک کلاس 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

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

Mat mat = Mat.zeros(512, 512, CvType.CV_8UC1);

سایز تصویر 512*512 می‌باشد. برای ذخیره‌سازی آن از کلاس Imgcodecs متد imwrite استفاده می‌کنیم:

Imgcodecs.imwrite("black.jpg",mat);

تصویر زیر در فولدر پروژه شما با نام black.jpg ایجاد می‌شود.

نوشتن تصاویر در جاوا با OpenCV

برای اینکه رنگ پیکسل را تغییر دهیم از متد put استفاده می‌کنیم. در کد زیر مقدار پیکسل‌های 50 الی 200 را سفید رنگ (مقدار 255) می‌کنیم:

	public static void main(String[] args) {
		System.loadLibrary
(Core.NATIVE_LIBRARY_NAME);
		Mat mat =
 Mat.zeros(512, 512, CvType.CV_8UC1);
		for (int i = 50; i < 200; i++) {
			for (int j = 50; j < 200; j++) {
				mat.put(i, j, 255);
			}
		}
		Imgcodecs.imwrite("black.jpg", mat);
	}

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

پسورد: www.codegate.ir

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

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

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