59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
import pandas as pd
|
|
import numpy as np
|
|
import sys
|
|
import os
|
|
import matplotlib.pyplot as plt
|
|
from IPython import embed
|
|
import cv2
|
|
import glob
|
|
|
|
def main(folder):
|
|
sr = 20000
|
|
|
|
video_path = glob.glob(os.path.join(folder, '2022*.mp4'))[0]
|
|
cap = cv2.VideoCapture(video_path)
|
|
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
|
|
|
|
times = np.load(os.path.join(folder, 'times.npy'))
|
|
LED_idx = pd.read_csv(os.path.join(folder, 'led_idxs.csv'), sep=',', encoding = "utf-7")
|
|
|
|
led_idx = np.array(LED_idx).T[0]
|
|
led_frame = np.load(os.path.join(folder, 'LED_frames.npy'))
|
|
led_vals = np.load(os.path.join(folder, 'LED_val.npy'))
|
|
|
|
led_idx_span = led_idx[-1] - led_idx[0]
|
|
led_frame_span = led_frame[-1] - led_frame[0]
|
|
|
|
led_frame_to_idx = ((led_frame-led_frame[0]) / led_frame_span) * led_idx_span + led_idx[0]
|
|
|
|
frame_idxs = np.arange(frame_count)
|
|
frame_times = (((frame_idxs - led_frame[0]) / led_frame_span) * led_idx_span + led_idx[0]) / sr
|
|
|
|
if not os.path.exists(os.path.join(folder, 'analysis')):
|
|
os.mkdir(os.path.join(folder, 'analysis'))
|
|
np.save(os.path.join(folder, 'analysis', 'frame_times.npy'), frame_times)
|
|
|
|
########################################################################################
|
|
fig, ax = plt.subplots()
|
|
ax.plot(led_vals)
|
|
ax.plot(led_frame, np.ones(len(led_frame))*100, '.', color='firebrick')
|
|
|
|
########################################################################################
|
|
fig, ax = plt.subplots()
|
|
ax.plot(led_idx / sr, np.ones(len(led_idx)), '.', color='k')
|
|
ax.plot(led_frame_to_idx / sr, np.ones(len(led_frame_to_idx))+.1, '.', color='firebrick')
|
|
ax.plot([times[0], times[0]], [0.5, 1.5], 'k', lw=1)
|
|
ax.plot([times[-1], times[-1]], [0.5, 1.5], 'k', lw=1)
|
|
|
|
ax.plot(frame_times, np.ones(len(frame_times))*0.5)
|
|
|
|
ax.set_ylim(0, 2)
|
|
|
|
plt.show()
|
|
|
|
embed()
|
|
quit()
|
|
pass
|
|
|
|
if __name__ == '__main__':
|
|
main(sys.argv[1]) |