質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

1044閲覧

動画内の1フレーム全体における画素値の算出(opencv を利用)

退会済みユーザー

退会済みユーザー

総合スコア0

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/05/16 06:43

先ず範囲を指定した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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2019/05/16 07:48

インデントがなくなりどの位置にprintがあるのか分かりません。 ソースはコードブロック```で囲んでください。 また、I値は集計値なので画素数に関係なく1個の値をとると思うのですが、いかがでしょうか?
退会済みユーザー

退会済みユーザー

2019/05/16 09:35

返信ありがとうございます 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] print(val) 以上です。sumの部分を消しました。上をフレームを0から1に設定、範囲を11×11の領域に設定したら計121個の画素値[R G B] が出ると思いましたが、なぜか1個しか出なくて困ってました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問