python_developer
1.54K subscribers
3.74K photos
1.97K videos
232 files
434 links
کانال اموزش پایتون @Real_developer
تبلیغات پذیرفته میشود.
Download Telegram
‍ import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('messi5.jpg',0)
edges = cv2.Canny(img,100,200)

plt.subplot(121),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])

plt.show()

💢💢💢💢💢💢
💢Template Matching💢
تطبیق الگو:
پیدا کردن اشیا در تصویر با استفاده از توابع cv2.matchTemplate(), cv2.minMaxLoc()


تطبیق الگو، یک روش برای جستجوی و پیدا کردن محل تصویر یک الگو ، در تصویر بزرگتر است. که opencv با استفاده از
تابع cv2.matchTemplate() این کار را انجام میدهد.


💢💢
تصویر بزرگتر
تصویر الگو
‍ import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('normal_avazak_ir-sport47.jpg',0)
img2 = img.copy()
template = cv2.imread('messi_face.jpg',0)
w,h = template.shape[::-1]

# All the 6 methods for comparison in a list
methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR','cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']

for meth in methods:
img = img2.copy()
method = eval(meth)

# Apply template Matching
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

# If the method is TM_SQDIFF or TM_SQDIFF_NORMED, take minimum
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
top_left = min_loc
else:
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)

cv2.rectangle(img,top_left, bottom_right, 255, 2)

plt.subplot(121),plt.imshow(res,cmap = 'gray')
plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(img,cmap = 'gray')
plt.title('Detected Point'), plt.xticks([]), plt.yticks([])
plt.suptitle(meth)

plt.show()
💢Template Matching with Multiple Objects💢
تطبیق الگو با چندین اشیا
در بخش قبلی، ما تصویری را برای چهره مسی پیدا کردیم که فقط یک بار در تصویر رخ می دهد.
فرض کنید شما در جستجوی یک شی هستید که چندین بار در تصویر،
رخ داده است،ولی cv2.minMaxLoc () تمام مکان های شما را نمی دهد.
در این مورد، از آستانه استفاده خواهیم کرد.
ما از تصویر ی از بازی Mario استفاده خواهیم کرد و سکه ها را در آن پیدا خواهیم کرد.
💢💢💢💢💢
تصویر بزرگتر
تصویر الگو
import cv2
import numpy as np
from matplotlib import pyplot as plt

img_rgb = cv2.imread('111.png')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('1111.PNG',0)
w, h = template.shape[::-1]

res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)

cv2.imwrite('res.png',img_rgb)
💢💢💢💢
تصویر res.png را که داخل پوشه ایجاد شده را باز میکنیم:
💢💢💢
اصلش باید اینطوری باشه 🤔
This media is not supported in your browser
VIEW IN TELEGRAM
💢اولین پروژه💢
1) تشخیص و شمردن سکه ها
💢