Python говорит, что «TrackerMedianFlow_create ()» больше не является атрибутом cv2. Библиотека была обновлена? - PullRequest
0 голосов
/ 13 июня 2019

Python говорит, что TrackerMedianFlow_create () больше не является атрибутом cv2.

Я смотрел здесь, но это не то же самое: OpenCV, Как передать параметры в функцию cv2.TrackerMedianFlow_create? Я безуспешно спрашивал на нескольких серверах разногласий.Я скопировал этот код прямо из моего учебника с помощью Ctrl + C, поэтому он должен быть точным.

import cv2
import numpy as np

cap = cv2.VideoCapture("../data/traffic.mp4")
_, frame = cap.read()

bbox = cv2.selectROI(frame, False, True)

cv2.destroyAllWindows()

tracker = cv2.TrackerMedianFlow_create()
status_tracker = tracker.init(frame, bbox)
fps = 0

while True:
    status_cap, frame = cap.read()
    if not status_cap:
        break

    if status_tracker:
        timer = cv2.getTickCount()
        status_tracker, bbox = tracker.update(frame)

    if status_tracker:
        x, y, w, h = [int(i) for i in bbox]
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 15)
        fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer);
        cv2.putText(frame, "FPS: %.0f" % fps, (0, 80), cv2.FONT_HERSHEY_SIMPLEX, 3.5, (0, 0, 0), 8);
    else:
        cv2.putText(frame, "Tracking failure detected", (0, 80), cv2.FONT_HERSHEY_SIMPLEX, 3.5, (0,0,255), 8)

    cv2.imshow("MedianFlow tracker", frame)

    k = cv2.waitKey(1)

    if k == 27: 
        break

cv2.destroyAllWindows()

Моя строка, которая вызывает проблему:

tracker = cv2.TrackerMedianFlow_create()

До тех пор, покакод работает.

Traceback (most recent call last):
  File "D:/Documents/E-Books/Comp Vision/opencv3computervisionwithpythoncookbook_ebook/OpenCV3ComputerVisionwithPythonCookbook_Code/Chapter04/myPart5.py", line 11, in <module>
    tracker = cv2.TrackerMedianFlow_create()
AttributeError: module 'cv2.cv2' has no attribute 'TrackerMedianFlow_create'

Я ожидал, что он будет работать без ошибок.

1 Ответ

1 голос
/ 13 июня 2019

TrackerMedianFlow - это модуль в пакете opencv-contrib , который не входит в стандартную поставку официального дистрибутива OpenCV. Вам нужно будет установить пакет opencv-contrib для доступа TrackerMedianFlow_create()

Согласно документации , вам следует удалить пакет без дополнительных модулей и продолжить переустановку opencv с необходимыми дополнительными модулями.

pip uninstall opencv-python
pip install opencv-contrib-python
...