در این قسمت تیم کدگیت را با آموزش رسم اشکال هندسی در جاوا همراهی کنید. در ابتدای این جلسه در خصوص دو کلاس Scalar و Point صحبت خواهیم کرد و در ادامه با استفاده از کتابخانه OpenCV در جاوا اشکال هندسی مستطیل، دایره را بر روی یک تصویر دلخواه میکشیم. پیشنیاز این جلسه شامل موارد زیر است:
- نصب کتابخانه OpenCV در جاوا
- خواندن تصاویر در جاوا با OpenCV
- نوشتن تصاویر در جاوا با OpenCV
- تبدیل تصویر رنگی به خاکستری در جاوا با OpenCV
کلاس Scalar
کلاس Scalar برای نمایش وکتور (ماتریسی دارای یک سطر یا یک ستون) استفاده میشود در این آموزش برای تنظیم رنگهای اشکال هندسی از این کلاس استفاده میشود. کد زیر نمونه یک وکتور با سه ورودی R و G و B میباشد:
Scalar rgb = new Scalar(255, 255, 255);
برای تصاویر GrayScale یا خاکستری از یک پارامتر ورودی(در کلاس Scalar) استفاده میکنند.
Scalar gray = new Scalar(255);
کلاس Point
برای نمایش نقطهای در فضای دو بعدی از کلاس Point استفاده میکنند. در این آموزش برای تعیین مکان پیکسلها از این کلاس استفاده میشود. در کد زیر نمونه استفاده از کلاس Point آورده شده است:
Point p1 = new Point(10, 200);
رسم اشکال هندسی در جاوا
در ابتدا ما یک تصویر را ایجاد و سپس بر روی ان اشکال هندسی را میکشیم. ابتدا یک تصویر (کاملا سیاه رنگ) را ایجاد میکنیم:
Mat src = Mat.zeros(512, 512, CvType.CV_8UC3);
رسم مستطیل
حال میتوانیم اشکال هندسی خود را در تصویر ایجاد شده بکشیم. مستطیل را به عنوان اولین شکل هندسی انتخاب میکنیم. برای کشیدن مستطیل از کلاس Imgcodecs متد rectangle استفاده میکنیم. این کد شامل پنج ورودی زیر میباشد:
- تصویری ورودی: تصویری که میخواهیم در آن مستطیلی رسم کنیم.
- نقطه بالا سمت چپ مستطیل: پیکسلی که میخواهیم نقطه بالا سمت چپ مستطیل ما باشد را به صورت Point به ورودی میدهیم.
- نقطه پایین سمت راست مستطیل: پیکسلی که میخواهیم نقطه پایین سمت راست مستطیل ما باشد را به صورت Point به ورودی میدهیم.
- رنگ: انتخاب رنگ مستطیل به صورت BGR
- میزان thickness: میزان ضخامت یا thickness مستطیل با این پارامتر تنظیم میشود.

کد زیر برای ساخت یک مستطیل در یک تصویر سیاه میباشد:
// Drawing a Rectangle
Imgproc.rectangle(src, // Matrix obj of the image
new Point(130, 50), // p1
new Point(300, 280), // p2
new Scalar(255, 0, 0), // Scalar object for color
5 // Thickness of the line
);
در کد بالا نقطه بالا سمت چپ را (50و130) و نقطه پایین سمت راست را (280و300) انتخاب کردیم. رنگ مستطیل آبی و میزان ضخامت آن را برابر با 5 قرار دادیم. تصویر خروجی کد بالا به صورت زیر است:

رسم مستطیل
برای رسم دایره مانند مستطیل از کلاس Imgcodecs استفاده میکنیم. در این قسمت با استفاده از متد circle بر روی یک تصویر سیاه، دایرهای رسم میکنیم. پارامترهای ورودی این تابع به صورت زیر میباشند:
- تصویری ورودی: تصویری که میخواهیم در آن دایره رسم کنیم.
- نقطه مرکز دایره: پیکسلی که میخواهیم مرکز دایره ما باشد و به صورت Point به متد داده میشود.
- شعاع دایره: میزان شعاع دایره را به صورت تعداد پیکسل به تابع داده میشود.
- رنگ: انتخاب رنگ دایره به صورت BGR (فرمت Blue، Green و Red به ترتیب)
- میزان thickness: میزان ضخامت یا thickness دایره با این پارامتر تنظیم میشود.
کد رسم دایره به صورت زیر میباشد:
Imgproc.circle(src, // Matrix obj of the image
new Point(230, 160), // Center of the circle
100, // Radius
new Scalar(0, 0, 255), // Scalar object for color
10 // Thickness of the circle
);
تصویر خروجی کد بالا به صورت زیر است:

نکته: در صورتی که میخواهید دایره و یا مستطیل شما به صورت کامل (توپر) باشد مقدار thickness را برابر با 1- قرار دهید.