[Ubuntu] [Python] Objektverfolgung mit dlib

Die Objektverfolgung von OpneCV hat die Stichprobe von Zeit zu Zeit verschoben. Ich habe dlib noch nie ausgeführt, also probieren Sie es aus.

Ich habe auch die Bewegungsunschärfe verfolgt und es scheint eine gute Leistung zu haben.

Das Video ist unten. https://www.youtube.com/watch?v=ORgMddcNHvU [[Ubuntu] [Python] Objektverfolgung mit dlib](https://www.youtube.com/watch?v = ORgMddcNHvU)

Der Quellcode ist unten.


#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''
correlation_tracker.py.

Usage:
  correlation_tracker.py [<video source>] [<resize rate>]
'''


import sys
import dlib
import cv2
import time
import copy

#Maus-Event-Handler
mouse_start_x, mouse_start_y = 0, 0
mouse_end_x, mouse_end_y = 0, 0
selecting = False
tracker_start_flag = False
tracking_flag = False
def select_roi(event,x,y,flags,param):
    global selecting, tracker_start_flag
    global mouse_start_x, mouse_start_y
    global mouse_end_x, mouse_end_y
    if event == cv2.EVENT_LBUTTONDOWN:
        selecting = True
        mouse_start_x, mouse_start_y = x,y

    elif event == cv2.EVENT_MOUSEMOVE:
        if selecting == True:
            mouse_end_x, mouse_end_y = x, y
        else:
            pass
    elif event == cv2.EVENT_LBUTTONUP:
        mouse_end_x, mouse_end_y = x, y
        selecting = False
        tracker_start_flag = True

#Argumentinterpretation
try:
    fn = sys.argv[1]
    if fn.isdigit() == True:
        fn = int(fn)
except:
    fn = 0
try:
    resize_rate = sys.argv[2]
    resize_rate = int(resize_rate)
except:
    resize_rate = 1

#Tracker-Generation
tracker = dlib.correlation_tracker()

video_input = cv2.VideoCapture(fn)
if (video_input.isOpened() == True):
    ret, frame = video_input.read()
    cv2.imshow('correlation tracker', frame)
    cv2.setMouseCallback('correlation tracker', select_roi)

while(video_input.isOpened() == True):
    ret, frame = video_input.read()
    temp_frame = copy.deepcopy(frame)

    #Reduzierung des Zielrahmens zur Reduzierung der Verarbeitungslast (wenn ein Argument angegeben wird)
    height, width = frame.shape[:2]
    temp_frame = cv2.resize(frame, (int(width/resize_rate), int(height/resize_rate)))

    if tracker_start_flag == True:
        #Starten Sie die Verfolgung
        tracker.start_track(temp_frame, dlib.rectangle(mouse_start_x, mouse_start_y, mouse_end_x, mouse_end_y))
        tracking_flag = True
        tracker_start_flag = False
    elif tracking_flag == True:
        #Verfolgen von Updates
        tracker.update(temp_frame)

    #Zeichnung
    if selecting == True:
        cv2.rectangle(frame, (mouse_start_x, mouse_start_y), (mouse_end_x, mouse_end_y), (0, 0, 255), 2)
    if tracking_flag == True:
        tracking_point = tracker.get_position()
        tracking_point_x1 = int(tracking_point.left())
        tracking_point_y1 = int(tracking_point.top())
        tracking_point_x2 = int(tracking_point.right())
        tracking_point_y2 = int(tracking_point.bottom())
        cv2.rectangle(frame, (tracking_point_x1, tracking_point_y1), (tracking_point_x2, tracking_point_y2), (0, 0, 255), 2)

    cv2.imshow('correlation tracker', frame)

    c = cv2.waitKey(50) & 0xFF

    if c==27: # ESC
        break

das ist alles.

Recommended Posts

[Ubuntu] [Python] Objektverfolgung mit dlib
[Ubuntu] [Python] Gesichtsorganerkennung mit dlib
Integriertes Python-Objekt
Starten Sie Python
Integriertes Python-Objekt
Scraping mit Python
Schätzung der Kopforientierung mit Python und OpenCV + dlib
Erstellen Sie die Python3.5 + matplotlib-Umgebung unter Ubuntu 12 mit Anaconda
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Python-Entwicklung unter Ubuntu unter AWS EC2 (mit Jupyter Lab)
Bearbeiten Sie Redmine mit Python Redmine
Fibonacci-Sequenz mit Python
Objektverfolgung mit OpenCV3 und Python3 (Verfolgung von Funktionspunkten, die mit der Maus mithilfe der Lucas-Kanade-Methode festgelegt wurden)
Datenbereinigung mit Python
[Ubuntu] [Python] Vergleich der Gesichtserkennung zwischen dlib und OpenCV
Verwenden von Python # externen Paketen
Objektorientiert in Python
WiringPi-SPI-Kommunikation mit Python
Altersberechnung mit Python
Suchen Sie Twitter mit Python
Build Python auf Ubuntu
Installieren Sie Python 3.3 unter Ubuntu 12.04
Über Python3 ... (Ellipsenobjekt)
Namensidentifikation mit Python
Hinweise zur Verwendung von Python-Unterprozessen
Spielen Sie einen Beep-Sound in Python (Ubuntu)
Versuchen Sie es mit Tweepy [Python2.7]
Mit Python abflachen
Verwenden von X11 mit ubuntu18.04 (C-Sprache)
Scraping mit Python 3.5 async / await
Speichern Sie Bilder mit Python3-Anforderungen
Verwenden Sie matplotlib unter Ubuntu 12 und Python
[S3] CRUD mit S3 unter Verwendung von Python [Python]
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
String-Objektmethoden in Python
Verwenden von Quaternion mit Python ~ numpy-quaternion ~
[Python] Wert des Funktionsobjekts (?)
Windows 10: Installieren der DLIB-Bibliothek für Python
Nullobjektvergleich in Python
Versuchen Sie es mit Kubernetes Client -Python-
Python-Notizen zur Verwendung von Perl-Spezialvariablen
[Python] Verwenden von OpenCV mit Python (Basic)
Scraping mit Python 3.5 Async-Syntax
Überwachung von Website-Änderungen mit Python
Gesichtserkennung mit Python + dlib
Mit Python auf Twitter posten
Setzen Sie Python 3.x in Ubuntu ein
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Starten Sie mit Python zu Selen
Suchalgorithmus mit word2vec [Python]
Ändern Sie die Python-Version mit pyenv
Python: Grundlagen der Verwendung von Scikit-Learn ①
# 1 [python3] Einfache Berechnung mit Variablen
Erstellen Sie JIRA-Tickets mit Python
Installieren Sie OpenCV unter Ubuntu + Python
Instrumentensteuerung mit Python [pyvisa]