走り去るドクターイエローをスローモーション映像で記録する('24.06.15)

走り去るドクターイエローをスローモーション映像で記録する('24.06.15)#

引退するドクターイエローをSlomo動画で撮ってみる#

東海道新幹線・山陽新幹線区間を走る点検用新幹線車両、ドクターイエローが引退するというニュースを眺め、[昨日は引退するドクターイエロー(のぞみ検測下り)が走る動画を撮ってみた](file:///Users/jun/source/jupyter-book-2024/sd_all/_build/html/day_240614_opencv_dryellow.html)。 そして、競馬の決勝写真撮影カメラ風に、ゴールに向かうドクターイエローの雄姿を映像にしてみた。

今日は、のぞみ検測上りのドクターイエローを240コマ/秒でスマホ撮影して、昨日同様に決勝写真撮影カメラ風の映像を作ってみる。 まずは、撮影したのが次の動画だ。

Hide code cell source
import IPython.display

IPython.display.YouTubeVideo('x6lD63xYp6M')

高速度撮影映像から決勝写真撮影カメラ風画像を作る#

昨日同様に、決勝写真撮影カメラ風の映像にしてみる。 横方向(時間方向)の解像度は高くはなったが、どうも今ひとつだ。 綺麗な映像が撮れているとは言い難い。 明日以降もドクターイエローはまだ走る。 もう少し良い画像が得られるように試行錯誤してみたいと思う。

Hide code cell source
import numpy as np
import matplotlib.pyplot as plt
import cv2

spec_file = '/Users/jun/source/jupyter-book-2024/sd_all/data/day_240615_opencv_dryellow_trim.mov'
cap = cv2.VideoCapture(spec_file)
w = round(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_n = round(cap.get(cv2.CAP_PROP_FRAME_COUNT))

img=np.zeros((h,frame_n,3),np.uint8)

x=round(w/2)
n=0
while(cap.isOpened()):
    ret,frame=cap.read()
    if ret:
        img[:,n,0]=frame[:,x,2]
        img[:,n,1]=frame[:,x,1]
        img[:,n,2]=frame[:,x,0]
        n = n+1
    else:
        break
cap.release()
Hide code cell source
plt.figure(figsize=(18,27),dpi=180)
plt.axis('off')
#plt.imshow(img)
plt.imshow(img[850:950,200:-250])
<matplotlib.image.AxesImage at 0x29b725f50>
_images/c7bbe182c4a0a0a537eb0f8c939669cf28ed9ce9f9f63fa2fc707cf8e396a897.png

……