2017-04-04 17 views
1

私はそれについて考えようとしましたが、新しかったので、それは私のためには機能しません。 誰かが、例えば3番目または5番目のフレームごとに保存できるようにここに追加する必要があるものはありますか?ここ はコードフレームごとにビデオをカットし、3回ごとに保存しますか?

import cv2 
    vidcap = cv2.VideoCapture('myvid.mp4') 
    success,image = vidcap.read() 
    count = 0; 
    print "I am in success" 
    while success: 
     success,image = vidcap.read() 
     if count % 3 == 0: 
     cv2.imwrite("img_%3d.jpg" % count, image)  
     if cv2.waitKey(10) == 27:      
      break 
     count += 1 

あり、このような愚かな質問^^

スキップのためのコードのnフレームの中に助けいただき、誠にありがとうございます、あなたが必要なものを保存します。 3番目のフレームごとの例:

import cv2 
vidcap = cv2.VideoCapture('myvid.mp4') 
success,image = vidcap.read() 
count = 0; 
print "I am in success" 
while success: 
    success,image = vidcap.read() 
    if count % 3 == 0: 
    cv2.imwrite("img_%3d.jpg" % count, image)  
    if cv2.waitKey(10) == 27:      
     break 
    count += 1 

答えて

1

count % 3 == 0を確認するだけです。しかし、あなたのコードに別のキャッチがあります

import cv2 
vidcap = cv2.VideoCapture('myvid.mp4') 
success,image = vidcap.read() 
count = 0; 

# number of frames to skip 
numFrameToSave = 3 

print "I am in success" 
while success: # check success here might break your program 
    success,image = vidcap.read() #success might be false and image might be None 
    #check success here 
    if not success: 
    break 

    # on every numFrameToSave 
    if (count % numFrameToSave ==0): 
    cv2.imwrite("img_%3d.jpg" % count, image) 

    if cv2.waitKey(10) == 27:      
     break 
    count += 1 
+0

ありがとうございました!正直言って、1分。あなたがcount%3 == 0を書いたように、この問題の解決を見いだしました。 – GGzet

+0

'success、image = vidcap.read()'をwhileループからループの最後に置くと、ループ内で成功を確認する必要がなくなります。それがループに入るのをチェックします。もう一つの利点は、今のような最初のフレームのドロップを持っていないことです(ライン3と11で)二重の読み込みのためです。 – Aleksandar

関連する問題