查看视频有多少帧
python
复制代码
import cv2
def count_frames_per_second(video_path):
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
print("Error: Could not open video")
return None
# Get frames per second
fps = cap.get(cv2.CAP_PROP_FPS)
# Get total number of frames
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
# Calculate total time in seconds
total_time_seconds = total_frames / fps if fps > 0 else 0
# Convert total time to minutes and seconds for better readability
total_minutes = total_time_seconds // 60
total_seconds = total_time_seconds % 60
print(f"Frames per second: {fps}")
print(f"Total frames in the video: {total_frames}")
print(f"Total time of the video: {int(total_minutes)} minutes and {total_seconds:.2f} seconds")
cap.release()
return fps, total_frames, total_time_seconds
# Example usage
video_path = "D:\\WorkSpace\\pitaya_video\\video\\VID_20241015_082527.mp4" # Change this to your video file path
count_frames_per_second(video_path)
单个视频
python
复制代码
import cv2
import os
def capture_frames(video_path,save_frame_path):
# Get the video name without extension
video_name,suffix_mp4 = os.path.splitext(os.path.basename(video_path))
# Create a directory to save frames
frames_dir = os.path.join(save_frame_path, video_name)
os.makedirs(frames_dir, exist_ok=True)
# Open the video file
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
print(f"Error: Could not open video file {video_path}")
return
frame_count = 0
while True:
# Read a frame from the video
ret, frame = cap.read()
# Break the loop if there are no more frames
if not ret:
break
# Save the frame as an image file
frame_filename = os.path.join(frames_dir, f"{video_name}_frame_{frame_count:04d}.jpg")
cv2.imwrite(frame_filename, frame)
print(f"Saved {frame_filename}")
frame_count += 1
# Release the video capture object
cap.release()
print(f"Total frames saved: {frame_count}")
# Example usage
video_file_path = "D:\\WorkSpace\\pitaya_video\\video" # Replace with your video file path
video_file_path = os.path.join(video_file_path,"VID_20241015_082527.mp4")
save_frame_path = "D:\\WorkSpace\\pitaya_video\\all_image"
capture_frames(video_file_path,save_frame_path)
多个视频
python
复制代码
import cv2
import os
def capture_frames_from_videos(video_directory,save_frame_path):
# List all video files in the specified directory
video_files = [f for f in os.listdir(video_directory) if f.endswith('.mp4')]
for video_file in video_files:
video_path = os.path.join(video_directory, video_file)
print(f"Processing video: {video_path}")
# Get the video name without extension
video_name, suffix_mp4= os.path.splitext(video_file)
# Create a directory to save frames
frames_dir = os.path.join(save_frame_path, video_name)
os.makedirs(frames_dir, exist_ok=True)
# Open the video file
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
print(f"Error: Could not open video file {video_path}")
continue
frame_count = 0
while True:
# Read a frame from the video
ret, frame = cap.read()
# Break the loop if there are no more frames
if not ret:
break
# Save the frame as an image file
frame_filename = os.path.join(frames_dir, f"{video_name}_frame_{frame_count:04d}.jpg")
cv2.imwrite(frame_filename, frame)
print(f"Saved {frame_filename}")
frame_count += 1
# Release the video capture object
cap.release()
print(f"Total frames saved for {video_file}: {frame_count}")
# Example usage
video_directory = "D:\\WorkSpace\\pitaya_video\\video" # Replace with your video directory path
save_frame_path = "D:\\WorkSpace\\pitaya_video\\all_image"
capture_frames_from_videos(video_directory,save_frame_path)
一秒截取3帧
python
复制代码
import cv2
import os
def capture_frames_from_videos(video_directory, save_frame_path):
# List all video files in the specified directory
video_files = [f for f in os.listdir(video_directory) if f.endswith('.mp4')]
for video_file in video_files:
video_path = os.path.join(video_directory, video_file)
print(f"Processing video: {video_path}")
# Get the video name without extension
video_name, _ = os.path.splitext(video_file)
# Create a directory to save frames
frames_dir = os.path.join(save_frame_path, video_name)
os.makedirs(frames_dir, exist_ok=True)
# Open the video file
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
print(f"Error: Could not open video file {video_path}")
continue
# Get the frames per second (fps) of the video
fps = cap.get(cv2.CAP_PROP_FPS)
print(f"Frames per second: {fps}")
# Calculate the interval to capture 3 frames per second
frame_interval = max(int(fps / 3), 1) # Ensure at least one frame interval
frame_count = 0
saved_frame_count = 0
while True:
# Read a frame from the video
ret, frame = cap.read()
# Break the loop if there are no more frames
if not ret:
break
# Save the frame at specific intervals
if frame_count % frame_interval == 0:
frame_filename = os.path.join(frames_dir, f"{video_name}_frame_{saved_frame_count:04d}.jpg")
cv2.imwrite(frame_filename, frame)
print(f"Saved {frame_filename}")
saved_frame_count += 1
frame_count += 1
# Release the video capture object
cap.release()
print(f"Total frames saved for {video_file}: {saved_frame_count}")
# Example usage
video_directory = "D:\\WorkSpace\\pitaya_video\\video" # Replace with your video directory path
save_frame_path = "D:\\WorkSpace\\pitaya_video\\all_image" # Replace with your desired output path
capture_frames_from_videos(video_directory, save_frame_path)