先ず範囲を指定した1フレームの動画の全画素値を出し、その範囲における合計18000フレームの画素値の変化を見る。
合計18000フレームの動画内の特定の領域における光の強度を測定しています。光の強度を画素の平均で示そうと思います。
そのために先ずは動画を静止画として1フレームごとに分割をして、そこから範囲を指定し、その範囲における光の強度を示そうと思っています(ピクセルではない) 実際に下に示します。
#実際のプログラム
-- coding: utf-8 --
from numpy import *
import cv2
import matplotlib.pyplot as plt
import numpy as np
video_path = "firstcrop.mkv"
cap = cv2.VideoCapture(video_path)
フレームの指定
numS=raw_input("start frame: ")
numS=int(numS)
numE=raw_input("end frame: ")
numE=int(numE)
場所を決める
xmin=raw_input("左上のx座標:")
ymin=raw_input("左上のy座標:")
xmax=raw_input("右下のx座標:")
ymax=raw_input("右下のy座標:")
Xmin=int(xmin)
Ymin=int(ymin)
Xmax=int(xmax)
Ymax=int(ymax)
for idx in range(numS,numE):
cap.set(cv2.CAP_PROP_POS_FRAMES, idx)
res, fr = cap.read()
for i in range(Xmin,Xmax+1): for j in range(Ymin,Ymax+1): val +=fr[i,j] I=sum(val) print(I)
以下は略
発生している問題・エラーメッセージ
試しにちゃんと出力が行なわれているか0から1のフレームで計算を行ないました。
私は左上の座標 (xmin,ymin)=(10.12) 右下の座標(xmax,ymax)=(20.22)として計算を行ないました。
しかしながら最後のIは1つのピクセルの画素値しか表示されません。全体を指定しているので合計11×11個の画素値が表示されるはずなのですが、、、
どなたか詳しい方教えてください。
エラーメッセージ
#計算式 先ずはある範囲内に置ける1フレームの画素値を示したいので以下の式を使います. これで1フレーム全体を出し、18000フレームまでの変化を見ていくのが目的です。 ![![イメージ説明](7ebd4700880086c9985c76c50da69e89.png)
あなたの回答
tips
プレビュー