2017-03-14 2 views
-1

Je travaille actuellement sur l'extraction d'images clés à partir de vidéos.Extraction d'images clés | Python | Opencv

code:

while success: 
        success, currentFrame = vidcap.read() 
        isDuplicate = False 
        limit = count if count <= 10 else (count - 10) 
        for img in xrange(limit, count): 
         previusFrame = cv2.imread("%sframe-%d.png" % (outputDir, img)) 
         try: 
          difference = cv2.subtract(currentFrame, previusFrame) 
         except: 
          pass 

Cela me donne d'énormes quantités d'images. Sortie attendue: Calculez la différence de pixels entre les images, puis comparez-la à une valeur de seuil et stockez des images clés uniques.

Travail sur des vidéos pour la première fois. s'il vous plaît guider sur la façon de procéder pour obtenir le résultat attendu

Répondre

1

Vous pouvez utiliser le code suivant qui itérer à travers tous les cadres et les contrôles de la différence entre les images comme:

import cv2 
import numpy as np 

video_path = "/Users/anmoluppal/Downloads/SampleVideo_1280x720_1mb.mp4" 
p_frame_thresh = 300000 # You may need to adjust this threshold 

cap = cv2.VideoCapture(video_path) 
# Read the first frame. 
ret, prev_frame = cap.read() 

while ret: 
    ret, curr_frame = cap.read() 

    if ret: 
     diff = cv2.absdiff(curr_frame, prev_frame) 
     non_zero_count = np.count_nonzero(diff) 
     if non_zero_count > p_frame_thresh: 
      print "Got P-Frame" 
     prev_frame = curr_frame