tr3quart1sta Δημοσ. 4 Δεκεμβρίου 2014 Δημοσ. 4 Δεκεμβρίου 2014 python (pseudocode): framerate = video.getFrameRate() # 30 newFramerate = 19 nrOfFramesRead = 0 while(1): nrOfFramesRead += 1 boolean dropFrame = function(framerate, nrOfFramesRead, nrOfFramesRead) if(!dropFrame): nextFrame = video.getNextFrame() Θελω να διαβαζω απο ενα video που εχει frame rate 30 μονο τα 19 απο αυτα (δλδ καθε 30 frames να αγνοω 11 απο αυτα), αλλα οσο γινεται δυνατον ομοιομορφα κατανεμημενα. Εχει κανεις μια ιδεα πως θα μπορουσε να ειναι η function που θα αποφασιζει με βαση αυτες τις παραμετρους ποια frames θα γινονται drop?
pmav99 Δημοσ. 4 Δεκεμβρίου 2014 Δημοσ. 4 Δεκεμβρίου 2014 Αν δεν θες απλά να πετάς τα πολλαπλάσσια του 3 τότε νομίζω ότι θες το random.sample https://docs.python.org/2/library/random.html#random.sample 1
tr3quart1sta Δημοσ. 4 Δεκεμβρίου 2014 Μέλος Δημοσ. 4 Δεκεμβρίου 2014 ακυρο, το εφτιαξα #!/usr/bin/python framerate = 10 for newfr in range (2,framerate): #print "newfr: ", newfr frames = [0,0,0,0,0,0,0,0,0,0] nrFramesToDrop = framerate - newfr #print "nfFramesToDrop: ", nrFramesToDrop dropFactor = framerate / float(nrFramesToDrop) #print "dropFactor: ", dropFactor for i in range(1, (nrFramesToDrop+1)): currFrame = i * dropFactor #print "currFrame: ", currFrame exactFrame = int(round(currFrame)) -1 #print "exactFrame: ", exactFrame frames[exactFrame] = 1 print "frames for new framerate ", newfr, " : ", frames
pmav99 Δημοσ. 4 Δεκεμβρίου 2014 Δημοσ. 4 Δεκεμβρίου 2014 Λίγο πιο ιδιωματικά μπορείς να το γράψεις και έτσι #!/usr/bin/python from __future__ import division def get_frames_to_drop(current_framerate, target_framerate): nr_frames_to_drop = current_framerate - target_framerate factor = current_framerate / nr_frames_to_drop frames_to_drop = [int(round(i * factor)) - 1 for i in xrange(1, nr_frames_to_drop + 1)] return frames_to_drop current_framerate = 30 target_framerate = 19 print(get_frames_to_drop(current_framerate, target_framerate) 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα