در قسمت دوازدهم از مجموعه آموزشی پردازش تصویر در پایتون، در رابطه با الگویابی صحبت کردیم و توانستیم با استفاده از متدهایی که اعمال کردیم تعداد سکههایی که در بازی سوپرماریو وجود داشت را تشخیص بدهیم. در این قسمت قصد داریم در رابطه با تشخیص گوشهها در تصویر صحبت کنیم.
اینکه در یک تصویر گوشهها شامل چه چیزی میشود به نظرم واضح است و نیازی به توضیح ندارد. ما در ادامه برنامهای خواهیم نوشت که گوشهها در تصویر به وضوح معلوم خواهند بود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import cv2 import numpy as np img = cv2.imread('corner.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = np.float32(gray) corners = cv2.goodFeaturesToTrack(gray, 200, 0.1, 10) corners = np.int32(corners) for corner in corners: x, y = corner.ravel() cv2.circle(img, (x,y), 3, (0, 255, 255), 1) cv2.imshow('corners', img) cv2.waitKey(0) |
همانطور که در کد بالا مشاهده میکنید ما با استفاده از دستور goodFeaturesToTrack از کتابخانه opencv توانستیم گوشهها را با توجه به تصویری که در ادامه خواهید دید به درستی تشخیص دهیم.
در دستور goodFeaturesToTrack، تعداد نقاط، فاصلهی این نقاط و دقتی برای اینکه گوشهها به درستی تشخیص داده شوند قابل اعمال است.
در دستور goodFeaturesToTrack، پارامتری برای اینکه دقت وجود دارد و با کم و زیاد کردن این پارامتر گوشههای تشخیص داده شده بهینهتر میشود.
پس از اینکه تشخیص گوشهها انجام شد، با کشیدن مستطیلی دور این گوشهها آنها را نمایش خواهیم داد.
پس از اجرای برنامهی بالا، خروجی که برای گوشهها مشاهده خواهیم کرد به شکل زیر است: