Не инициализировать трекер в cv2 (работает на Python) с правильным фреймом и регионом для отслеживания (cv2.TrackerKSF_cPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Не инициализировать трекер в cv2 (работает на Python) с правильным фреймом и регионом для отслеживания (cv2.TrackerKSF_c

Сообщение Anonymous »

Пока я инициализирую трекер:

Код: Выделить всё

is_track = tracker.init(frame, track_frame)
if is_track:
print("Tracker initialized!!!!!")
else:
print("It isn't work")
Пока все работало, появилась надпись "Не работает". Несколько раз я проверял «frame» и «track_frame», но пока не работает.
Мой кадр:

Код: Выделить всё

frame = path.read()
Мой track_frame:

Код: Выделить всё

x,y = clic_coordinates
track_frame = (x - 30 , y - 25 , 60, 50)
По этим координатам строится прямоугольник (верно, именно та форма, которую я хочу)

Код: Выделить всё

cv2.rectangle(frame, (x-30, y-25), (x + 30,y+ 25), (0, 255, 0), 2, 1)
И весь код:

Код: Выделить всё

path = cv2.VideoCapture(0)  #
clic_coordinates = None
coordinate_x=None
coordinate_y=None
condition=True
clicked=False

# Function for processing cliking on mause
def clicked_coordinates(event, x, y, flags, param):
global clic_coordinates
if event == cv2.EVENT_LBUTTONDOWN:
clic_coordinates = (x,y)
clicked = True
if event == cv2.EVENT_RBUTTONDOWN:
condition=False

tracker= cv2.TrackerKCF_create()   #tracker type
if tracker is None:
print("Tracker initialized incorrectly")
area_track=None
is_track = False

iteration=0

cv2.namedWindow("Tracking")
cv2.setMouseCallback("Tracking",clicked_coordinates)

while condition:
ret, frame = path.read()
if not ret:
break
#cv2.imshow("Tracking",frame)

if is_track:
print("HERE GO!!!")
is_track, area_track=tracker.update(frame)
if is_track:
(x, y, w, h) = [int(v) for v in area_track]
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2, 1)
else:
cv2.putText(frame, "Object is not tracked", (50, 80), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

if (clicked or clic_coordinates is not None):
x,y = clic_coordinates
track_frame = (x - 30 , y - 25 , 60, 50)
cv2.rectangle(frame, (x-30, y-25), (x + 30,y+ 25), (0, 255, 0), 2, 1)
clicked=False
clic_coordinates=None
#cv2.imshow("Tracking", frame)
if track_frame is not None:
print("region for track is ok: " , track_frame)
if frame is not None:
print(f"Frame size: {frame.size}")
print("Frame ok")
try:
#    ret, frame = path.read()
#   if ret:
is_track = tracker.init(frame, track_frame)
if is_track:
print("Tracker initialized!!!!!")
else:
print("It isn't work(")
except cv2.error:
print(f"OpenCV error: ")
print("Tracker hasn't initialized but go")
cv2.imshow("Tracking", frame)

if cv2.waitKey(300) & 0xFF == ord('q'):
condition=False
break
cv2.imshow("Tracking", frame)

Я пробовал все, что предлагал чатGPT, предлагал черный ящик: проверять кадр и track_frame, менять трекер (например на MIL), отображать на экране оба кадра. Единственная надежда - этот форум(

Подробнее здесь: https://stackoverflow.com/questions/790 ... -frame-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»