diff scripts/classify-objects.py @ 947:053484e08947

found a more elegant solution, making a copy of the list to iterate
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 21 Jul 2017 11:31:42 -0400
parents e5970606066f
children 64259b9885bf
line wrap: on
line diff
--- a/scripts/classify-objects.py	Fri Jul 21 11:25:20 2017 -0400
+++ b/scripts/classify-objects.py	Fri Jul 21 11:31:42 2017 -0400
@@ -98,19 +98,19 @@
                 print('frame number: {}'.format(frameNum))
             #if undistort:
             #    img = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR)            
-            for obj in objects:
+            for obj in objects[:]:
                 if obj.getFirstInstant() <= frameNum: # if images are skipped
                     obj.initClassifyUserTypeHoGSVM(speedAggregationFunc, pedBikeCarSVM, bikeCarSVM, classifierParams.maxPedestrianSpeed, classifierParams.maxCyclistSpeed, classifierParams.nFramesIgnoreAtEnds, invHomography, intrinsicCameraMatrix, distortionCoefficients)
                     currentObjects.append(obj)
-            objects[:] = [obj for obj in objects if obj.getFirstInstant() > frameNum]
+                    objects.remove(obj)
 
-            for obj in currentObjects:
+            for obj in currentObjects[:]:
                 if obj.getLastInstant() <= frameNum:  # if images are skipped
                     obj.classifyUserTypeHoGSVM(minSpeedEquiprobable = classifierParams.minSpeedEquiprobable, speedProbabilities = speedProbabilities, maxPercentUnknown = classifierParams.maxPercentUnknown)
                     pastObjects.append(obj)
+                    currentObjects.remove(obj)
                 else:
                     obj.classifyUserTypeHoGSVMAtInstant(img, frameNum, width, height, classifierParams.percentIncreaseCrop, classifierParams.percentIncreaseCrop, classifierParams.minNPixels, classifierParams.hogRescaleSize, classifierParams.hogNOrientations, classifierParams.hogNPixelsPerCell, classifierParams.hogNCellsPerBlock, classifierParams.hogBlockNorm)
-            currentObjects[:] = [obj for obj in objects if obj.getLastInstant() > frameNum]
         frameNum += 1
     
     for obj in currentObjects: