Почему на RasPberry Pi 3 B + сопоставление шаблонов происходит так медленно - PullRequest
0 голосов
/ 19 марта 2019

Примечание: я использую Raspberry Pi Camera Rev1.3, и я установил ее в качестве камеры по умолчанию, и этот код действительно отлично работал на моем ноутбуке с камерой по умолчанию.

сначала я импортировал библиотеки opencv и numpy Также я ввел 3 шаблона, которые собирался использовать.

import cv2
import numpy as np


cap = cv2.VideoCapture(0)


cv2.namedWindow("cam")
template = cv2.imread('H.png',0)
template2 = cv2.imread('S.png',0)
template3 = cv2.imread('U.png',0)
w, h = template.shape[::-1]

Основная проблема, по-видимому, связана с соответствием шаблона, потому что когда я его удаляю, код работает очень хорошо и показывает действительно плавное видео.

while(True):
    ret, frame = cap.read()
    frame = cv2.resize(frame, (0,0), fx = 1.25, fy = 1.25)
    frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    res = cv2.matchTemplate(frame_gray, template, cv2.TM_CCOEFF_NORMED)
    res2 = cv2.matchTemplate(frame_gray, template2, cv2.TM_CCOEFF_NORMED)
    res3 = cv2.matchTemplate(frame_gray, template3, cv2.TM_CCOEFF_NORMED)

    threshold = 0.7
    loc = np.where( res >= threshold)
    loc2 = np.where( res2 >= 0.6)
    loc3 = np.where( res3 >= 0.6)


    for pt in zip(*loc[::-1]):
        cv2.rectangle(frame, pt, (pt[0] + w+200, pt[1] + h), (255,0,0), 0)
    for pt in zip(*loc2[::-1]):
        cv2.rectangle(frame, pt, (pt[0] + w+200, pt[1] + h), (0,255,0), 0)
    for pt in zip(*loc3[::-1]):
        cv2.rectangle(frame, pt, (pt[0] + w+200, pt[1] + h), (0,0,255), 0)




    cv2.imshow("cam", frame)
    w = cv2.waitKey(1)

    if w & 0xFF == ord('k'):
        break

cap.release()
cv2.destroyAllWindows()
...