Я написал скрипт, используя скрипт imagesearch в качестве примера, и он работает хорошо, все, кроме одной ошибки.
File "C:/Users/me/Desktop/python/animalID/test.py", line 55, in imagesearcharea
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\imgproc\src\templmatch.cpp:589: error: (-215:Assertion failed) corrsize.height <= img.rows + templ.rows - 1 && corrsize.width <= img.cols + templ.cols - 1 in function 'cv::crossCorr'
вот часть кода, которую он выполняет, я объясню, что он делает
Сначала в сценарии показано 50 изображений животных, либо из пула 0-199, либо из пула 200-399. Он распознает, какие они изображения, и сохранит имя файла в массиве. Затем время от времени на экране будет отображаться слово «животное», при этом будет сделан снимок экрана, а затем сценарий сравнивает снимок экрана со всеми изображениями животных из списка в массиве.
Если список в массиве от 0 до 1, он работает отлично, но если он от 200 до 399, он каждый раз вылетает.
def animalscanner():
global namenumber
global im
global animaltype
global currentnumber
global threshold
pos = imagesearch_loop("animal.png", 1)
global im
im = region_grabber((383, 625, 1078, 698))
im.save('zzzzzztestarea.png')
currentnumber = 0 #testing
animaltypechecker()
def animaltypechecker():
global namenumber
global im
global animaltype
global currentnumber
global threshold
pos = imagesearcharea("w" + str(animaltype[currentnumber]) + ".png", 0, 0, 602, 38, threshold, im)
while (pos[0] == -1):
if currentnumber == 50:
currentnumber = -1
threshold -= .01
currentnumber +=1
pos = imagesearcharea("w" + str(animaltype[currentnumber]) + ".png", 0, 0, 602, 38, threshold, im)
Я подумал, что это может быть поврежденный файл изображения, поэтому я забрал изображения 200-399 (через скриншот, используя тот же скрипт, что и я, когда делал первые 400 изображений), но он все равно не работал.
Я понятия не имею, что я делаю неправильно, я надеюсь, что этой информации достаточно, если не сказать мне, что еще предоставить.