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

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

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

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

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

Python 3.x

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

Q&A

0回答

467閲覧

相関係数を時系列データとして、棒グラフで表したい

退会済みユーザー

退会済みユーザー

総合スコア0

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

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

Python 3.x

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

0グッド

0クリップ

投稿2019/10/22 03:15

行いたいこと

120秒の動画のある点の相関を図っています。

相関係数を時間ごとに区切って(1秒ごとに区切りたいです。動画のフレームは30なので1秒間に30個plotされます)結果を棒グラフとしての時系列データで示したいです。

以下のコードですと、相関が1つの値として出てしまいます。

どのように時間ごとに区切って、時系列の棒グラフでplotできるのでしょうか?

コード内での相関係数は a です
tPointsは時間(s)をリストに入れています

よろしくお願いします

python

1# -*- coding: utf-8 -*- 2import cv2 3import matplotlib.pyplot as plt 4from numpy import * 5import pandas as pd 6from scipy import signal 7 8video_path = "water50_edit.mkv" 9cap = cv2.VideoCapture(video_path) 10 11count = cap.get(cv2.CAP_PROP_FRAME_COUNT) 12fps = cap.get(cv2.CAP_PROP_FPS) 13 14numS=raw_input("start frame: ") 15numS=int(numS) 16 17numE=raw_input("end frame: ") 18numE=int(numE) 19#numE=count 20print(numE) 21 22# 場所を決める 23#点滅の場所 24x1min=raw_input("点滅1左上のx座標:") 25y1min=raw_input("点滅1左上のy座標:") 26x1max=raw_input("点滅1右下のx座標:") 27y1max=raw_input("点滅1右下のy座標:") 28 29X1min=int(x1min) 30Y1min=int(y1min) 31X1max=int(x1max) 32Y1max=int(y1max) 33 34#x2min=raw_input("点滅2左上のx座標:") 35#y2min=raw_input("点滅2左上のy座標:") 36#x2max=raw_input("点滅2右下のx座標:") 37#y2max=raw_input("点滅2右下のy座標:") 38 39#X2min=int(x2min) 40#Y2min=int(y2min) 41#X2max=int(x2max) 42#Y2max=int(y2max) 43 44#x3min=raw_input("点滅3左上のx座標:") 45#y3min=raw_input("点滅3左上のy座標:") 46#x3max=raw_input("点滅3右下のx座標:") 47#y3max=raw_input("点滅3右下のy座標:") 48 49#X3min=int(x3min) 50#Y3min=int(y3min) 51#X3max=int(x3max) 52#Y3max=int(y3max) 53 54#ノイズの場所 55xnoisemin=raw_input("左上ノイズx座標:") 56ynoisemin=raw_input("左上ノイズy座標:") 57xnoisemax=raw_input("右下ノイズx座標:") 58ynoisemax=raw_input("右下ノイズy座標:") 59 60Xnoisemin=int(xnoisemin) 61Ynoisemin=int(ynoisemin) 62Xnoisemax=int(xnoisemax) 63Ynoisemax=int(ynoisemax) 64 65# フレーム [numS,numE] の範囲で各フレームの [ymin, ymax]x[xmin, xmax] の画素の平均を計算する。 66frame_no = arange(numS,numE) 67intensity1 = [] 68intensity2=[] 69intensity3=[] 70intensitynoise=[] 71for i in frame_no: 72 # フレーム frame_no を取得する。 73 cap.set(cv2.CAP_PROP_POS_FRAMES, i) 74 ret, frame = cap.read() 75 if not ret: 76 print('Failed to grab frame.') 77 break 78 # 平均画素値を計算する。 79 intensity1.append(frame[Y1min:Y1max+1, X1min:X1max+1].mean()) 80 intensitynoise.append(frame[Ynoisemin:Ynoisemax+1, Xnoisemin:Xnoisemax+1].mean()) 81 print "frame number ",i 82 83plt.plot(intensity1,intensitynoise,'o') 84tPoints=arange(len(intensity1))*(1/fps) 85print(len(tPoints)) 86 87Max=max(tPoints) 88Min=min(tPoints) 89 90time=linspace(Min,Max+1,30) 91 92 93 94corr=corrcoef(intensity1,intensitynoise) 95a=corr[0,1] 96print(a) 97 98 99plt.xlabel("intensity up") 100plt.ylabel("intensity down") 101plt.title("Correlation coefficient:%s"%a) 102plt.grid(True) 103plt.show()

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問