در نوشته کشیدن شکل در OpenCV تابع هایی از OpenCV را آموزش دادیم که برای کشیدن شکل ها به کار می روند. در این نوشته، می خواهیم تابع ()putText را بگوییم که برای گذاشتن یک متن بر روی تصویر به کار می رود. در این نوشته برخی دیگر از موارد آموزش داده می شوند که در زیر آنها را فهرست کرده ایم.

  • آموزش تابع ()putText و ()getTextSize
  • ساخت یک تصویر همه سیاه با ماژول NumPy

برای گذاشتن یک متن بر روی تصویر، باید موردهایی را در نظر بگیرید، نخست باید مختصات متن روی تصویر را مشخص کنید. توجه کنید مختصات (x, y) آغاز متن، در گوشه سمت چپ خواهد بود. برای نمونه مخصتات (0, 0) به گوشه سمت چپ بالا تصویر اشاره دارد. باید یک فونت و اندازه (Size یا مقیاس یا Scale) آن فونت را برای متن مشخص کنیم. رنگ متن، نازکی و ضخامت متن، برخی دیگر از چیزهایی که باید مشخص شوند.

کد زیر نمونه ای از کاربرد تابع ()putText و نیازمندی هایی که در بالا گفتیم را نشان می دهد. نخست متغیری به نام font ساخته ایم که به یک فونت پشتیبانی شده در OpenCV به نام  اشاره دارد. سپس تابع ()putText فراخوانی شده است که آرگومان نخست آن، متغیری است که به ماتریس تصویر اشاره دارد. آرگومان دوم، متنی است که می خواهیم بر روی تصویر و از نقطه مختصات فرستاده شده به آرگومان سوم بر روی تصویر نوشته شود. آرگومان سوم، توجه کنید یک تاپل پایتون است که مختصات (x , y) آغاز گذاشتن تصویر را نشان می دهد. 

آرگومان چهارم فونت متن تصویر را مشخص می کند که در اینجا متغیر font را به آن فرستاده ایم که پیش از این ساخته ایم و به فونت FONT_HERSHEY_SIMPLEX در OpenCV اشاره می کند. آرگومان پنجم، اندازه یا مقیاس فونت است که در اینجا شماره ۴ را به تابع فرستاده ایم. آرگومان ششم، رنگ فونت است و اگر به یاد داشته باشید گفتیم که سیستم RGB در OpenCV وارونه و به گونه BGR است. آرگومان هفتم، ضخامت خط ها به کار رفته برای کشیدن یک متن را مشخص می کند و در پایان، آرگومان هشتم گونه خط متن را مشخص می کند که بر پایه راهنمای OpenCV پیشنهاد می شود، مقدار cv2.LINE_AA به کار برود.

در کد زیر نخست دو متغیر به نام font_scale و font ساخته می شود که به ترتیب به اندازه و گونه فونت اشاره دارند. سپس رنگ یک ناحیه پس زمینه رنگ در تصویر سیاه را می سازیم که رنگ آن سفید است، زیرا مقدار هر سه پارامتر RGB برابر با ۲۵۵ است. سپس متغیری به نام img می سازیم که یک آرایه دو بعدی  ۵۰۰x ۵۰۰ است که همه درایه های آن شماره صفر هستند. پس ماتریس تصویری به ابعاد ۵۰۰x۵۰۰ ساخته می شود که زنگ آن همه سیاه است، زیرا همه درایه های ماتریس، شماره صفر است. سپس متغیر text شامل رشته متنی که بر روی تصویر می گذاریم را نوشته ایم.

تابع ()getTextSize که درخط ۱۳ نوشته شده است، اندازه پهنا (عرض) و بلندا (ارتفاع) یک متن را ارزیابی کرده و سپس خروجی آن دو مقدار برای پهنا و بلندا تصویر ورودی به تابع است. در اینجا می خواهیم برای متن متغیر text و فونت متغیر font، اندازه پهنا و بلندا را ارزیابی کرده که در پایان در متغیرهای text_width و text_hieght ریخته می شوند. آرگومان سوم در ارزیابی، همان اندازه فونت در متغیر font_scale است و در اینجا در ارزیابی، ضخامت فونت را شماره 1 تعیین کرده ایم.

در خط های ۱۵ و ۱۶ مخصتات (x, y) آغاز نوشتن شدن متن را مشخص کرده ایم که در آن x برابر با 10 و y برابر با تعداد ستون های تصویر منهای ۲۵ است. توجه کنید [img.shape[0 همان تعداد ستون ها است. سپس در خط ۱۸ یک تاپل، شامل دو تاپل درونی می سازیم که ابعاد مستصلی را مشخص می کند که می خواهیم پس زمینه متن به رنگ سفید درون تصویر سیاه رنگ باشد. در نهایت با کدهای زیر، نخست پس زمینه متن را با به شکل مستطیل با تابع ()rectangle می سازیم و سپس با متد ()putText متن را روی آن قرار می دهیم. توجه کنید در آرگومان color در تابع ()putText در زیر، رنگ متن سیاه است ولی رنگ پس زمینه مستطیلی آن، سفید رنگ است.

این کد از این لینک برداشته شده است