我正在尝试创建一个程序,可以输入一个图像(我是通过PIL的imageGrab来完成的),并检测其中一些已知的符号及其位置。好在我很确定我不需要神经网络,因为我知道每个符号的确切形状和大小。问题是我不知道这些会有多少,以及每个符号的背景颜色是什么。有些符号是数字,我有一个图像的每个数字0-9,但可能有多达3位数的数字。我想我可以找到一种方法,通过它们的位置来知道哪个数字是同一个数字的一部分,但我们稍后再讨论。现在,我已经将图像转换成灰度,并使用opencv2显示它。在
你知道我怎么用opencv做吗?其他图书馆?
我需要它足够快,希望每秒10帧。在import numpy as np
from PIL import ImageGrab
import cv2
def screen_record():
while(True):
global printscreen
image = ImageGrab.grab(bbox=(20,270,430,685))
printscreen = np.array(image)
grayscale_image = cv2.cvtColor(printscreen, cv2.COLOR_BGR2GRAY)
cv2.imshow('window', grayscale_image)
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
if cv2.waitKey(25) & 0xFF == ord('w'):
image.save("screen_shot.png")
print("Saved current window as image")
screen_record()
编辑:我设法得到了一些与opencv的模板匹配,只有数字2(目前)。我找到了一个不错的教程here。我的问题是当没有一个完全匹配的模板,意味着没有数字2s,或大于1。当没有任何一个时,它看起来像是在图像上随机选择一些东西,当有多个时,我只检测到其中一个。用不同的方式来满足我的需要,有可能吗?在