◯こちらのサンプルコードは指導等にご自由にお使いください。
【サンプルコードの使い方】
◯サンプルコードを写す時はコピペをしないようにしましょう。
◯▶を押すと出力が表示されます。
◯Geminiボタンを押すとGemini(AI)による解説が表示されます。間違っていることもあるので、疑問に思った場合はご質問ください。
◯本マークを押すとカテゴリーの解説が見られます。
◯サンプルコードを写す時はコピペをしないようにしましょう。
◯▶を押すと出力が表示されます。
◯Geminiボタンを押すとGemini(AI)による解説が表示されます。間違っていることもあるので、疑問に思った場合はご質問ください。
◯本マークを押すとカテゴリーの解説が見られます。
【カテゴリーごとのページへ移動】
【Code List】
すべて見る
CODE: n-1 (MediaPipe)
import cv2 import mediapipe as mp from mediapipe.tasks import python from mediapipe.tasks.python import vision cv2.setNumThreads(0) cv2.ocl.setUseOpenCL(False) INPUT_PATH = "n-1_input.mp4" OUTPUT_PATH = "n-1_output.mp4" MODEL_PATH = "hand_landmarker.task" def process_and_save_video(input_path, output_path, model_path): cap = cv2.VideoCapture(input_path) fps = int(cap.get(cv2.CAP_PROP_FPS)) w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter(output_path, fourcc, fps, (w, h)) base_options = python.BaseOptions(model_asset_path=model_path) options = vision.HandLandmarkerOptions( base_options=base_options, running_mode=vision.RunningMode.VIDEO, num_hands=2, min_hand_detection_confidence=0.5, min_hand_presence_confidence=0.5, min_tracking_confidence=0.5 ) with vision.HandLandmarker.create_from_options(options) as landmarker: while (cap.isOpened() ): success, frame = cap.read() if ( not success ): break mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=frame) timestamp_ms = int(cap.get(cv2.CAP_PROP_POS_MSEC)) result = landmarker.detect_for_video(mp_image, timestamp_ms) if ( result.hand_landmarks ): for landmarks in result.hand_landmarks: for landmark in landmarks: x = int(landmark.x * w) y = int(landmark.y * h) cv2.circle(frame, (x, y), 5, (0, 255, 0), -1) out.write(frame) cap.release() out.release() return def main(): process_and_save_video(INPUT_PATH, OUTPUT_PATH, MODEL_PATH) return(0) if __name__ == "__main__": main()




