Video Analysis - Add Audio Extraction

parent 2cfa6812
......@@ -12,23 +12,59 @@
"text": [
"Requirement already satisfied: mediapipe in c:\\users\\isuri\\anaconda3\\lib\\site-packages (0.8.9.1)\n",
"Requirement already satisfied: OpenCV-python in c:\\users\\isuri\\anaconda3\\lib\\site-packages (4.5.5.64)\n",
"Collecting ffmpeg\n",
" Downloading ffmpeg-1.4.tar.gz (5.1 kB)\n",
"Collecting moviepy\n",
" Using cached moviepy-1.0.3.tar.gz (388 kB)\n",
"Requirement already satisfied: attrs>=19.1.0 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from mediapipe) (21.2.0)\n",
"Requirement already satisfied: protobuf>=3.11.4 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from mediapipe) (3.20.1)\n",
"Requirement already satisfied: numpy in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from mediapipe) (1.20.3)\n",
"Requirement already satisfied: opencv-contrib-python in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from mediapipe) (4.5.5.64)\n",
"Requirement already satisfied: absl-py in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from mediapipe) (1.0.0)\n",
"Requirement already satisfied: matplotlib in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from mediapipe) (3.4.3)\n",
"Requirement already satisfied: absl-py in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from mediapipe) (1.0.0)\n",
"Requirement already satisfied: opencv-contrib-python in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from mediapipe) (4.5.5.64)\n",
"Requirement already satisfied: numpy in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from mediapipe) (1.20.3)\n",
"Collecting decorator<5.0,>=4.0.2\n",
" Using cached decorator-4.4.2-py2.py3-none-any.whl (9.2 kB)\n",
"Requirement already satisfied: tqdm<5.0,>=4.11.2 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from moviepy) (4.62.3)\n",
"Requirement already satisfied: requests<3.0,>=2.8.1 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from moviepy) (2.26.0)\n",
"Collecting proglog<=1.0.0\n",
" Downloading proglog-0.1.10-py3-none-any.whl (6.1 kB)\n",
"Requirement already satisfied: imageio<3.0,>=2.5 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from moviepy) (2.9.0)\n",
"Collecting imageio_ffmpeg>=0.2.0\n",
" Downloading imageio_ffmpeg-0.4.7-py3-none-win_amd64.whl (22.6 MB)\n",
"Requirement already satisfied: pillow in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from imageio<3.0,>=2.5->moviepy) (8.4.0)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from requests<3.0,>=2.8.1->moviepy) (1.26.7)\n",
"Requirement already satisfied: idna<4,>=2.5 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from requests<3.0,>=2.8.1->moviepy) (3.2)\n",
"Requirement already satisfied: charset-normalizer~=2.0.0 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from requests<3.0,>=2.8.1->moviepy) (2.0.4)\n",
"Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from requests<3.0,>=2.8.1->moviepy) (2021.10.8)\n",
"Requirement already satisfied: colorama in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from tqdm<5.0,>=4.11.2->moviepy) (0.4.4)\n",
"Requirement already satisfied: six in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from absl-py->mediapipe) (1.16.0)\n",
"Requirement already satisfied: pyparsing>=2.2.1 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from matplotlib->mediapipe) (3.0.4)\n",
"Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from matplotlib->mediapipe) (2.8.2)\n",
"Requirement already satisfied: pyparsing>=2.2.1 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from matplotlib->mediapipe) (3.0.4)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from matplotlib->mediapipe) (1.3.1)\n",
"Requirement already satisfied: cycler>=0.10 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from matplotlib->mediapipe) (0.10.0)\n",
"Requirement already satisfied: pillow>=6.2.0 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from matplotlib->mediapipe) (8.4.0)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in c:\\users\\isuri\\anaconda3\\lib\\site-packages (from matplotlib->mediapipe) (1.3.1)\n"
"Building wheels for collected packages: ffmpeg, moviepy\n",
" Building wheel for ffmpeg (setup.py): started\n",
" Building wheel for ffmpeg (setup.py): finished with status 'done'\n",
" Created wheel for ffmpeg: filename=ffmpeg-1.4-py3-none-any.whl size=6083 sha256=e4de5a03b9c64a7650c0a2fac910970b8c8034f46a63a23db680eea96502ff0f\n",
" Stored in directory: c:\\users\\isuri\\appdata\\local\\pip\\cache\\wheels\\1d\\57\\24\\4eff6a03a9ea0e647568e8a5a0546cdf957e3cf005372c0245\n",
" Building wheel for moviepy (setup.py): started\n",
" Building wheel for moviepy (setup.py): finished with status 'done'\n",
" Created wheel for moviepy: filename=moviepy-1.0.3-py3-none-any.whl size=110744 sha256=0cc7fd53e06f58c297cfb57bd037311f6c6f0b14f13ea02adcaee3f67e5623e3\n",
" Stored in directory: c:\\users\\isuri\\appdata\\local\\pip\\cache\\wheels\\29\\15\\e4\\4f790bec6acd51a00b67e8ee1394f0bc6e0135c315f8ff399a\n",
"Successfully built ffmpeg moviepy\n",
"Installing collected packages: proglog, imageio-ffmpeg, decorator, moviepy, ffmpeg\n",
" Attempting uninstall: decorator\n",
" Found existing installation: decorator 5.1.0\n",
" Uninstalling decorator-5.1.0:\n",
" Successfully uninstalled decorator-5.1.0\n",
"Successfully installed decorator-4.4.2 ffmpeg-1.4 imageio-ffmpeg-0.4.7 moviepy-1.0.3 proglog-0.1.10\n"
]
}
],
"source": [
"!pip install mediapipe OpenCV-python"
"!pip install mediapipe OpenCV-python ffmpeg moviepy\n",
"\n",
"#needed to extract audio - ffmpeg moviepy"
]
},
{
......@@ -47,53 +83,32 @@
"import cv2\n",
"import os\n",
"import csv\n",
"import moviepy.editor as editor\n",
"\n",
"mp_drawing = mp.solutions.drawing_utils\n",
"mp_pose = mp.solutions.pose"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9c075107",
"metadata": {},
"outputs": [],
"source": [
"#global variables\n",
"\n",
"#storing landmark details\n",
"nose_landmark_full_desc, left_eye_inner_landmark_full_desc, left_eye_landmark_full_desc, left_eye_outer_landmark_full_desc, right_eye_inner_landmark_full_desc, right_eye_landmark_full_desc, right_eye_outer_landmark_full_desc, left_mouth_landmark_full_desc, right_mouth_landmark_full_desc = [], [], [], [], [], [], [], [], []\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 6,
"id": "17b488db",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[INFO] Processing LRH_video_01...\n"
]
}
],
"outputs": [],
"source": [
"#processing a video\n",
"\n",
"VIDEO_STREAM = 'C:\\\\Users\\\\isuri\\\\Documents\\\\SLIIT\\\\4th Year\\\\Y4 Research 2022\\\\Data Collection\\\\Data collection videos\\\\Cropped Videos\\\\LRH_video_01.mp4'\n",
"video_name = 'LRH_video_01'\n",
"output_folder = \"C:\\\\Users\\\\isuri\\\\Documents\\\\SLIIT\\\\4th Year\\\\Y4 Research 2022\\\\Data Collection\\\\Results\\\\Mediapipe\\\\LRH_video_01\"\n",
"def obtain_coordinates():\n",
"\n",
"print(f\"[INFO] Processing {video_name}...\")\n",
"VIDEO_STREAM_OUT = os.path.join(output_folder , video_name + '_MP.mp4')\n",
"graph_plot = os.path.join(output_folder , video_name+'_MP.png')\n",
"cap = cv2.VideoCapture(VIDEO_STREAM)\n",
" print(f\"[INFO] Processing {video_name}...\")\n",
" VIDEO_STREAM_OUT = os.path.join(output_folder , video_name + '_MP.mp4')\n",
" graph_plot = os.path.join(output_folder , video_name+'_MP.png')\n",
" cap = cv2.VideoCapture(VIDEO_STREAM)\n",
"\n",
"fourcc = cv2.VideoWriter_fourcc(*\"XVID\")\n",
" fourcc = cv2.VideoWriter_fourcc(*\"XVID\")\n",
"\n",
"#set up media pipe instance\n",
"with mp_pose.Pose(min_detection_confidence=0.5, min_tracking_confidence=0.5) as pose:\n",
" #set up media pipe instance\n",
" with mp_pose.Pose(min_detection_confidence=0.5, min_tracking_confidence=0.5) as pose:\n",
" while cap.isOpened():\n",
" ret, frame = cap.read() #get current feed from device\n",
"\n",
......@@ -112,7 +127,7 @@
" try:\n",
" landmarks = results.pose_landmarks.landmark\n",
" #print(landmarks)\n",
" \n",
"\n",
" #having a list of set of coordinates of the nose\n",
" nose_landmark_full_desc.append(landmarks[mp_pose.PoseLandmark.NOSE.value])\n",
"\n",
......@@ -135,31 +150,28 @@
},
{
"cell_type": "code",
"execution_count": null,
"id": "65a0b21e",
"execution_count": 7,
"id": "f8e035e9",
"metadata": {},
"outputs": [],
"source": [
"#saving the details to a given location\n",
"##SEPARATING AUDIO FROM VIDEO\n",
"\n",
"name_for_feed = 'recorded_test_01'\n",
"def extract_audio():\n",
" #defining the clip\n",
" #r = to read the\n",
" my_clip = editor.VideoFileClip(r\"test_videos\\LRH_video_01.mp4\")\n",
"\n",
"#specify storage location\n",
"storage_path = 'result_analysis/' + name_for_feed \n",
" #converting\n",
" my_clip.audio.write_audiofile(r'my_result.mp3')\n",
"\n",
"#check if specified path exists, if not create it\n",
"if not (os.path.isdir(storage_path)):\n",
" os.makedirs(storage_path, mode = 0o777, exist_ok = False)\n",
"\n",
"storage_location = storage_path + '/coordinates.csv'\n",
"\n",
"#write data to csv\n",
"write_to_csv(storage_location)"
" #converting to wav - easier with speech recognition\n",
" my_clip.audio.write_audiofile(r\"my_result_sr.wav\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 8,
"id": "75dcebc6",
"metadata": {},
"outputs": [],
......@@ -185,6 +197,131 @@
" #writing the record details to the file\n",
" writer.writerow([frameNo, record.x, record.y, record.z])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "d3784870",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[INFO] Processing LRH_video_01...\n",
"MoviePy - Writing audio in my_result.mp3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"MoviePy - Done.\n",
"MoviePy - Writing audio in my_result_sr.wav\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"MoviePy - Done.\n"
]
}
],
"source": [
"###MAIN PROGRAM\n",
"\n",
"#variables\n",
" #storing landmark details\n",
"nose_landmark_full_desc, left_eye_inner_landmark_full_desc, left_eye_landmark_full_desc, left_eye_outer_landmark_full_desc, right_eye_inner_landmark_full_desc, right_eye_landmark_full_desc, right_eye_outer_landmark_full_desc, left_mouth_landmark_full_desc, right_mouth_landmark_full_desc = [], [], [], [], [], [], [], [], []\n",
"\n",
" #video details\n",
"VIDEO_STREAM = 'test_videos/LRH_video_01.mp4'\n",
"video_name = 'LRH_video_01'\n",
"output_folder = 'result_analysis/' + video_name\n",
"\n",
"#processing\n",
"obtain_coordinates()\n",
"extract_audio()\n",
"\n",
"#generating yaw,pitch, roll\n",
"\n",
"#saving generated data\n",
" #check if specified path exists, if not create it\n",
"if not (os.path.isdir(output_folder)):\n",
" os.makedirs(output_folder, mode = 0o777, exist_ok = False)\n",
"\n",
"storage_location = output_folder + '/coordinates.csv'\n",
"\n",
" #write data to csv\n",
"write_to_csv(storage_location)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "20fb4bd8",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"\n",
"# syntax for 3-D projection\n",
"ax = plt.axes(projection ='3d')\n",
"\n",
"x_points, y_points, z_points = [], [], []\n",
"\n",
"plot_name = '3D line plot of nose'\n",
"\n",
"for record in nose_landmark_full_desc:\n",
" x_points.append(record.x)\n",
" y_points.append(record.y)\n",
" z_points.append(record.z)\n",
"\n",
" \n",
"ax.plot3D(x_points, y_points, z_points, 'green')\n",
"ax.set_title(plot_name)\n",
" \n",
"#Saving the plot as an image\n",
"fig.savefig(plot_name + '.jpg', bbox_inches='tight', dpi=150)\n",
"\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "047a0ea4",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment