程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python+opencv實圖片定位

編輯:Python
# -*- coding: utf-8 -*-
import cv2
file=r'D:/Setting.png' #大圖
temp=r'D:/Battery.png' #小圖
# 彈出圖片後 CTRL+S保存圖片到本地
method = cv2.TM_SQDIFF_NORMED
# method = cv2.TM_CCOEFF_NORMED
# Read the images from the file
small_image = cv2.imread(temp)
large_image = cv2.imread(file)
result = cv2.matchTemplate(small_image, large_image, method)
# 需要最小平方差
mn,_,mnLoc,_ = cv2.minMaxLoc(result)
# 開始畫矩形:
# Extract the coordinates of our best match
MPx,MPy = mnLoc #獲得最小坐標的
print(MPx, MPy)
# MPx1,MPy1 = mxLoc #獲得最大坐標的
# print(MPx1, MPy1)
# Step 2: Get the size of the template. This is the same size as the match.
trows,tcols = small_image.shape[:2] #獲得圖片的寬度
# Step 3: Draw the rectangle on large_image
# 將小圖片用紅線在大圖片圈出來
cv2.rectangle(large_image, (MPx,MPy),(MPx+tcols,MPy+trows),(0,0,255),2)
# cv2.rectangle(large_image, (MPx+169,MPy+76),(MPx+719,MPy+117),(0,0,255),2)
# Display the original image with the rectangle around the match.
cv2.imshow('output',large_image)
# The image is only displayed if we call this
cv2.waitKey(0)
#方法不同,獲得的坐標不同
# print(MPx, MPy)
# print(MPx1, MPy1)
# 注意看一下兩種方法有一個結果是相同的
#cv2.TM_SQDIFF_NORMED
# 結果:
# 96 179
# 70 1122
# cv2.TM_CCOEFF_NORMED
# 結果:
# 72 1631
# 96 179

如下圖所示,在背景圖片中找到的  搜索的 圖標,並用紅線圈出來 


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved