در قسمت سیزدهم از مجموعه آموزشی پردازش تصویر در پایتون، در رابطه با تشخیص گوشهها صحبت کردیم و توانستیم گوشههای یک تصویر را مشخص کنیم و همچنین با استفاده از پارامترهایی میتوانستیم قدرت این تشخیص را کم و زیاد کنیم. در این قسمت میخواهیم در رابطه با تشخیص الگوهای مشابه صحبت کنیم و اینکه چگونه یک الگوی که در دو تصویر وجود دارد را مشخص کنیم.
در این قسمت ما علاوه بر کتابخانههای OpenCV و numpy از کتابخانهی matplot نیز استفاده خواهیم کرد.
در ادامه ما برای اینکه الگوهای مشابه را در تصویر تشخیص بدهیم، دو تصویر مشابه هم را انتخاب خواهیم کرد. یکی از تصویرها مرجع خواهد بود و تصویر دیگر باید در تصویر مرجع تشخیص داده شود. پس از اینکه برنامه را اجرا کردیم، مشاهده خواهید کرد که یکی از تصویرها به خوبی در تصویر مرجع تشخیص داده خواهد شد.
برنامه ما به صورت زیر است:
import cv2 import numpy as np import matplotlib.pyplot as plt img_template = cv2.imread('p2.jpg', 0) img = cv2.imread('p1.jpg', 0) orb = cv2.ORB_create() kp1, des1 = orb.detectAndCompute(img_template, None) kp2, des2 = orb.detectAndCompute(img, None) bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck = True) matches = bf.match(des1, des2) matches = sorted(matches, key=lambda x: x.distance) img_out = cv2.drawMatches(img, kp2, img_template, kp1 matches[:10], None, flags=2) plt.imshow(img_out) plt.show()
پس از اینکه برنامهی بالا را اجرا کردیم خروجی زیر به ما نمایش داده میشود:
همانطور که در تصویر بالا مشاهده میکنید بخشهای مشابه دو تصویر با خطوطی رنگی به هم ربط داده شدهاند. چون در این تصویر نوشته وجود داشت به خوبی تشخیص داده شد.
این مقاله برگرفته از آموزش ویدئویی زیر میباشد، برای مشاهدهی جزئیات بیشتر حتما این ویدئو را مشاهده بفرمائید.
منبع : سیسوگ
[…] قسمت چهاردهم از مجموعه آموزشی پردازش تصویر در پایتون، در رابطه با […]