Videos können in der Python-Entwicklungsumgebung nicht mit Spyder geladen werden

-- coding: utf-8 --

import cv2.cv as cv import cv2 import numpy as np

MAX_FEATURES = 500 # RADIUS2 = 25 DETECT_TURM = 20 # Bestimmen Sie, wie viele Frames verwendet werden sollen WINDOW_NAME = u'Objektverfolgung'.encode ('cp932')

Beendigungsbedingung des iterativen Algorithmus

criteria = (cv2.TERM_CRITERIA_MAX_ITER | cv2.TERM_CRITERIA_EPS , 20 , 0.03)

class App:

def __init__(self):
    
   
    
    cv2.namedWindow(WINDOW_NAME)
    
    cv2.setMouseCallback(WINDOW_NAME , self.on_mouse)
    
    
    self.src = cv2.VideoCapture('crossing_accident.avi')
    if not self.src.isOpened():

print u'Kann nicht drucken ' import sys sys.exit()

    self.points_now = None

self.detect_count = DETECT_TURM Zählt so viele wie #DETECT_TURM

def auto_detect(self):
    
    
    self.points_now = cv2.goodFeaturesToTrack(self.img_now , MAX_FEATURES , 0.01 , 10)
    
    
    cv2.cornerSubPix(self.img_now , self.points_now , (10 , 10) , (-1 , -1) , criteria)
    
    
def remove_points(self):
    index = 0
    
    while index < len(self.points_now):
        
        if self.status[index] == 0:
            self.points_now = np.delete(self.points_now , index , 0)
            self.status = np.delete(self.status , index , 0)
            index -= 1
            
        index += 1
        
        
def on_mouse(self , event , x , y , flags , param):
        
    if event != cv2.EVENT_LBUTTONDOWN:
        return
            
            
            
    index = -1
    mini = RADIUS2
    count = 0
    if self.points_now != None:
        for point in self.points_now:
            dx = x - point[0][0]
            dy = y - point[0][1]
            r2 = dx * dx + dy * dy
            if r2 <= mini:
                index = count
                mini = r2
                break
            count += 1
                
    if index >= 0:
        self.points_now = np.delete(self.points_now , index , 0)
        self.status = np.delete(self.status , index , 0)
                
    else:
        if self.points_now != None and len(self.points_now) >= MAX_FEATURES:

print u'Nicht mehr Feature-Punkte können extrahiert werden ' return

        if self.points_now == None:
            self.points_now = np.array([[[x , y]]] , np.float32)
        else:
            self.points_now = np.append(self.points_now , [[[x , y]]] , axis = 0).astype(np.float32)
                    
                    
        cv2.cornerSubPix(self.img_now , self.points_now , (10 , 10) , (-1 , -1) , criteria)
                
                
def chk_detect(self): 

self.detect_count- = 1 Subtrahieren Sie 1 von der Anzahl von DETECT_TURM, die # self.detect_count zugewiesen ist if self.detect_count == 0: #Wenn self.detect_count 0 wird self.detect_count = DETECT_TURM Gibt # self.detect_count auf den Wert des ersten DETECT_TURM zurück self.auto_detect () #Automatisch Feature-Punkte extrahieren

def run(self):
    while True:

self.chk_detect () #Während des Abspielens des Videos werden Feature-Punkte automatisch für jede von DETECT_TURM angegebene Anzahl von Frames extrahiert. retval , frame = self.src.read()

        if frame is None:
            break
        
        
        self.img_now = cv2.cvtColor(frame , cv2.COLOR_BGR2GRAY)
        
        
        if self.points_now != None and len(self.points_now) > 0:
            
            
            points_pre = self.points_now
        
        
            self.points_now , self.status , err = \
                cv2.calcOpticalFlowPyrLK(self.img_pre , self.img_now , points_pre , winSize = (10 , 10) , maxLevel = 3 , criteria = criteria , flags = 0 , minEigThreshold = 0.01)
            
            print 'aaaa'
            print len(points_pre)
            print len(self.points_now)
            
            #self.remove_points()
            
            
            #for point in self.points_now:

für i im Bereich (len (points_pre)): Ersetzen Sie "0 ~ Anzahl der Array-Elemente" in #points_pre durch i und wiederholen Sie den Vorgang während "0 ~ Anzahl der Array-Elemente". diff_x = points_pre [i] [0] [0] --self.points_now [i] [0] [0] # Nehmen Sie die Differenz zwischen den x-Koordinaten der Punkte im vorherigen Frame und den Punkten im aktuellen Frame. diff_y = points_pre [i] [0] [1] --self.points_now [i] [0] [1] # Nehmen Sie die Differenz zwischen den y-Koordinaten der Punkte im vorherigen Frame und den Punkten im aktuellen Frame. point = self.points_now[i] # diff = diff_x * diff_x + diff_y * diff_y # Nehmen Sie den Abstand zwischen den Punkten im vorherigen Frame und den Punkten im aktuellen Frame auf die gleiche Weise wie im Drei-Quadrat-Theorem. wenn diff> 1 und diff <2: #Wenn der Abstand zwischen dem Punkt im vorherigen Frame und dem Punkt im aktuellen Frame größer als 1 und kleiner als 2 ist. cv2.circle (Rahmen, (Punkt [0] [0], Punkt [0] [1]), 4, (0, 0, 255 - 255 * - (1-Diff)), -1, 8, 0) #Zeichne einen Punkt. Die Farbe der Punkte sollte sich abhängig von der Bewegungsgeschwindigkeit des Objekts ändern. Wenn es früh ist, ist es ein roter Punkt, und wenn es spät ist, ist es ein schwarzer Punkt. #cv2.circle(frame , (point[0][0] , point[0][1]) , 4 , (0 , 0 , 255*random.random()) , -1 , 8 , 0)

            self.remove_points()
                
                
                
                
        cv2.imshow(WINDOW_NAME , frame)
        self.img_pre = self.img_now.copy()
        
        
        key = cv2.waitKey(33)
        if key == 27:
            break
        elif key == 67 or key == 99:
            self.points_now = None
        elif key == 32:
            self.auto_detect()
            
            
    cv2.destroyAllWindows()
    self.src.release()

if name == 'main': App().run()

Wenn ich das obige Programm auf Spyder ausführe, wird der folgende Fehler angezeigt.

runfile('C:/Users/tatomi/Desktop/chase/chasing.py', wdir='C:/Users/tatomi/Desktop/chase') Ausgabe nicht möglich An exception has occurred, use %tb to see the full traceback.

SystemExit

Ich habe das Gefühl, ich habe keinen Pass genommen oder so. Was soll ich tun?

Recommended Posts

Videos können in der Python-Entwicklungsumgebung nicht mit Spyder geladen werden
Entwicklungsumgebung in Python
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
De-VBA Excel Tool! Beseitigen Sie das VBA Tool in einer Umgebung, in der Python nicht mit Python installiert werden kann
Richten Sie mit Atom eine Python-Entwicklungsumgebung ein
django kann nicht in der Entwicklungsumgebung von pipenv + pyenv installiert werden
Jupyter Notebook 6.0.2 kann nicht in der in Anaconda erstellten Python 2.7-Umgebung installiert werden
[Entwicklungsumgebung] Python mit Xcode [Mit Bildschirmübergang]
Python-Modul mit "- (Bindestrich)" kann nicht gelöscht werden
Einführung von sip-4.14 in der Python3.2.2-Umgebung mit MacOS 10.7.4
Beginnen Sie in 30 Minuten mit Python! Erstellen Sie eine Entwicklungsumgebung und lernen Sie grundlegende Grammatik
Wechseln Sie das zu ladende Modul für jede Ausführungsumgebung in Python
Ich kann mit Python3.5 (Windows) + django1.7.1 kein Projekt erstellen.
Erstellen Sie eine Python-Entwicklungsumgebung mit Visual Studio Code
Erstellen Sie eine virtuelle Umgebung mit conda in Python
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Einstellungen für die Python-Umgebung (virtualenv + pip ist nicht möglich)
Untersuchung beim Import kann nicht mit Python durchgeführt werden
Arbeiten Sie in einer virtuellen Umgebung mit Python virtualenv.
Verwenden Sie Python in einer Anaconda-Umgebung mit VS-Code
Matplotlib usw. kann nicht in die VirtualEnv-Umgebung importiert werden
Holen Sie sich mit Poetry eine schnelle Python-Entwicklungsumgebung
Informationen zur Python-Entwicklungsumgebung
virtuelle Umgebung in Python
Python-Umgebung mit Docker-Compose
python2.7 Konstruktion der Entwicklungsumgebung
Framework-Entwicklung mit Python
Virtuelle Umgebung mit Python 3.6
Slackbot-Entwicklung in Python
Virtualisieren (isolieren) Sie die IBM i Python-Entwicklungsumgebung mit chroot
Führen Sie regelmäßig ein Python-Skript mit cron in einer venv-Umgebung aus
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
[Memorandum] Japanische Schlüssel können nicht in Pythons string.Template.substitute verwendet werden
Listenverständnis, da operator.methodcaller nicht mit Python 2.5 verwendet werden kann
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Operatoren ++, - können nicht in Python verwendet werden (Unterschied zu PHP)
Beim Import kann matplotlib.pyplot nicht in einer pyenv-virtualenv-Umgebung ausgeführt werden
Python-Entwicklungsumgebung mit Windows + Anaconda3 + Visual Studio Code
Aufbau einer QGIS3 Python-Plug-In-Entwicklungsumgebung mit VSCode (macOS)
Verwalten Sie Python-Laufzeitpakete und Entwicklungsumgebungspakete mit Poetry
Python-Entwicklungsumgebung mit Windows + Python + PipEnv + Visual Studio-Code
[Redash] Die Standardbibliothek kann nicht in der Python-Funktion verwendet werden
Richten Sie mit Sublime Text 2 eine Python-Entwicklungsumgebung ein
Versuchen Sie, Python in der mit pipenv erstellten Django-Umgebung auszuführen
Schaben mit Selen in Python
Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry
Betreiben Sie LibreOffice mit Python
Installieren Sie die Python-Umgebung mit Anaconda
Schaben mit Chromedriver in Python
Verwalten Sie die Python-Umgebung mit virtualenv
Debuggen mit pdb in Python
Lösung, wenn das Bild mit tkinter [python] nicht angezeigt werden kann
YouTube-Videoverwaltung mit Python 3
Befehle, die häufig in der Entwicklungsumgebung während der Python-Implementierung verwendet werden
Behandeln Sie Umgebungsvariablen in Python
Scraping mit Selen in Python
Erstellen einer Entwicklungsumgebung für Android-Apps - Erstellen von Android-Apps mit Python
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Bereiten Sie die Python-Entwicklungsumgebung mit Mac + Windows + VisualStudio Code (Windows-Version) vor.
Bereiten Sie die Python3-Umgebung mit Docker vor