2021年10月11日 星期一

Python-使用樣本圖案找出在圖片中位置

 使用一個樣本圖案,找出在圖片中的位置。


 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import cv2
import pyscreenshot
import time

#讀取樣本圖片,將圖片讀取成黑白。1彩色、0黑白。
image_sample=cv2.imread("D:\Test\Sample.jpg",0)
#擷圖目前螢幕畫面。
imagea_screenshot = pyscreenshot.grab()
#設定圖片為目前時間。
image_file = 'D:\\' + time.strftime('%Y-%m-%d-%H-%M-%S') + '.jpg'
#將擷圖畫面存檔。
imagea_screenshot.save(image_file, quality=100)
#讀取圖片,將圖片讀取成黑白。
image = cv2.imread(image_file,cv2.IMREAD_GRAYSCALE)
#圖片和樣本比對。TM_CCOEFF_NORMED比對出來準確值由1到-1。1是完全一樣。
match_result = cv2.matchTemplate(image, image_sample, cv2.TM_CCOEFF_NORMED)
#最小值、最大值、最小值座標、最大值座標。
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(match_result)
#print(min_val, max_val, min_loc, max_loc)
#準確度最大值9成以上表示找到和樣本相似度高的圖案,找到後進行畫框。
if max_val > 0.9:
#讀取樣本的圖片尺吋,以為畫框的右下點。
height, width = image_sample.shape[:2]
#將比對後最大值的座標加上樣子尺吋,做為右下點座標。
right=max_loc[0] + height, max_loc[1] + width
#讀取要畫框的圖片。
image_result = cv2.imread(image_file,1)
#畫框(圖片、左上座標、右下座標、顏色、線宽)。
cv2.rectangle(image_result,max_loc,right,(0, 0, 255), 2)
#展示成果
cv2.imshow('My Image',image_result)
cv2.waitKey(0)
else:
print('not find ')



結果:使用PDF圖示檔樣本。



沒有留言:

張貼留言

Ubuntu-Journalctl查看系統日誌

 近期所使用Ubuntu系統24小時開著,進行跑Python程式使用,但跑個2~3天,排程就無法正常寄信,SSH連線也無法正常連線,經查看後為wifi連線問題,暫先使用腳本排程進行重開wifi。 以下為記錄Journalctl指令。 使用Journalctl來從系統日誌上查看看問...