Python<OpenCV>将MP4提取为图片
import cv2
import os
import sys
# Function to extract frames from a video until reaching the desired frame count
def extract_frames(video_file):
cap = cv2.VideoCapture(video_file)
frame_rate = 2 # Desired frame rate (1 frame every 0.5 seconds)
frame_count = 0
# Get the video file's name without extension
video_name = os.path.splitext(os.path.basename(video_file))[0]
# Create an output folder with a name corresponding to the video
output_directory = f"{video_name}_frames"
os.makedirs(output_directory, exist_ok=True)
while True:
ret, frame = cap.read()
if not ret:
break
frame_count += 1
# Only extract frames at the desired frame rate
if frame_count % int(cap.get(5) / frame_rate) == 0:
output_file = f"{output_directory}/frame_{frame_count}.png"
cv2.imwrite(output_file, frame)
print(f"Frame {frame_count} has been extracted and saved as {output_file}")
if frame_count >= 30:
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
if len(sys.argv)<2:
print("Usage:\n < mp4 file name >")
sys.exit()
if 2== len(sys.argv):
files = sys.argv[1:]
video_file = files[0]
sys.exit(extract_frames(video_file))
else:
import os
import sys
# Function to extract frames from a video until reaching the desired frame count
def extract_frames(video_file):
cap = cv2.VideoCapture(video_file)
frame_rate = 2 # Desired frame rate (1 frame every 0.5 seconds)
frame_count = 0
# Get the video file's name without extension
video_name = os.path.splitext(os.path.basename(video_file))[0]
# Create an output folder with a name corresponding to the video
output_directory = f"{video_name}_frames"
os.makedirs(output_directory, exist_ok=True)
while True:
ret, frame = cap.read()
if not ret:
break
frame_count += 1
# Only extract frames at the desired frame rate
if frame_count % int(cap.get(5) / frame_rate) == 0:
output_file = f"{output_directory}/frame_{frame_count}.png"
cv2.imwrite(output_file, frame)
print(f"Frame {frame_count} has been extracted and saved as {output_file}")
if frame_count >= 30:
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
if len(sys.argv)<2:
print("Usage:\n < mp4 file name >")
sys.exit()
if 2== len(sys.argv):
files = sys.argv[1:]
video_file = files[0]
sys.exit(extract_frames(video_file))
else:
sys.exit()
评论已关闭