gpt4 book ai didi

python - 如何在 OpenCV 中为视频创建多个模板图像

转载 作者:太空宇宙 更新时间:2023-11-03 23:05:28 24 4
gpt4 key购买 nike

我正在创建一个程序来记录游戏屏幕并进行模板匹配以对设置的 Action 使用react。我想知道当 OpenCV 突出显示每个模板图像的路径名时,当当前解决方案循环遍历数组导致诸如多次发生 react 之类的问题时,返回每个模板图像的路径名的最佳方式是什么?

我尝试将图像放在一个数组中,并按照所述进行迭代,导致程序出现问题。

import numpy as np
from PIL import ImageGrab
import cv2
import time
import glob
import pyautogui

def ow_check(image):
original_image = image
# convert to gray
processed_img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# template
template_data = []
files1= glob.glob('F:\Coding\Python\Test\Templates\*.png')
for myfile in files1:

template = cv2.imread(myfile,0)
template_data.append(template)

for tmp in template_data:
(w, h) = tmp.shape[::--1]
res = cv2.matchTemplate(processed_img, tmp, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
#drawing of the rectangle
for pt in zip(*loc[::-1]):
cv2.rectangle(image, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
#print('target spotted')
for file in files1:
template2 = cv2.imread(file,0)
if np.array_equal(template2,tmp):
print(file)
if file == 'F:\Coding\Python\Test\Templates\BS.PNG':
# gives us time to get situated in the game
#overworld code
print('s')
pyautogui.keyDown('s')
pyautogui.keyUp('s')
time.sleep(1.0)

只返回 if 文件部分一次而不是多次?

最佳答案

你可以试试这个:

对检索到的文件名进行排序,以便您可以将操作连接到特定的数组位置。

files1 = sorted(glob.glob('F:\Coding\Python\Test\Templates\*.png'))

然后使用枚举遍历模板。这将返回模板及其索引。

for index, tmp in enumerate(template_data):

如果找到匹配项,您可以使用索引来确定要采取的操作。

例如,如果“BS.png”是按字母顺序排列的第一个图像文件,则在索引为 0 时执行所需的操作。

关于python - 如何在 OpenCV 中为视频创建多个模板图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com