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

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

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

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

NumPy

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

OpenCV

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

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

495閲覧

信号のフーリエ変換におけるエラーの解決法

退会済みユーザー

退会済みユーザー

総合スコア0

Matplotlib

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

NumPy

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

OpenCV

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

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/05/30 08:51

### 動画内における光を強度を信号として得たあとのフーリエ変換したプログラムを作成しましたがどうしてもエラーが生じてしまいます。詳細は以下の通りです。何がいけないのでしょうか?

ソースコード

python

1# -*- coding: utf-8 -*- 2import cv2 3import matplotlib.pyplot as plt 4import numpy as np 5import pandas as pd 6from scipy import signal 7 8video_path = "firstcrop.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 17#numE=raw_input("end frame: ") 18#numE=int(numE) 19numE=count 20 21# 場所を決める 22#点滅の場所 23x1min=raw_input("点滅1左上のx座標:") 24y1min=raw_input("点滅1左上のy座標:") 25x1max=raw_input("点滅1右下のx座標:") 26y1max=raw_input("点滅1右下のy座標:") 27 28X1min=int(x1min) 29Y1min=int(y1min) 30X1max=int(x1max) 31Y1max=int(y1max) 32 33#x2min=raw_input("点滅2左上のx座標:") 34#y2min=raw_input("点滅2左上のy座標:") 35#x2max=raw_input("点滅2右下のx座標:") 36#y2max=raw_input("点滅2右下のy座標:") 37 38#X2min=int(x2min) 39#Y2min=int(y2min) 40#X2max=int(x2max) 41#Y2max=int(y2max) 42 43#x3min=raw_input("点滅3左上のx座標:") 44#y3min=raw_input("点滅3左上のy座標:") 45#x3max=raw_input("点滅3右下のx座標:") 46#y3max=raw_input("点滅3右下のy座標:") 47 48#X3min=int(x3min) 49#Y3min=int(y3min) 50#X3max=int(x3max) 51#Y3max=int(y3max) 52 53#ノイズの場所 54xnoisemin=raw_input("左上ノイズx座標:") 55ynoisemin=raw_input("左上ノイズy座標:") 56xnoisemax=raw_input("右下ノイズx座標:") 57ynoisemax=raw_input("右下ノイズy座標:") 58 59Xnoisemin=int(xnoisemin) 60Ynoisemin=int(ynoisemin) 61Xnoisemax=int(xnoisemax) 62Ynoisemax=int(ynoisemax) 63 64# フレーム [numS,numE] の範囲で各フレームの [ymin, ymax]x[xmin, xmax] の画素の平均を計算する。 65frame_no = np.arange(numS,numE) 66intensity1 = [] 67intensity2=[] 68intensity3=[] 69intensitynoise=[] 70for i in frame_no: 71 # フレーム frame_no を取得する。 72 cap.set(cv2.CAP_PROP_POS_FRAMES, i) 73 ret, frame = cap.read() 74 if not ret: 75 print('Failed to grab frame.') 76 break 77 # 平均画素値を計算する。 78 intensity1.append(frame[Y1min:Y1max+1, X1min:X1max+1].mean()) 79 #intensity2.append(frame[Y2min:Y2max+1, X2min:X2max+1].mean()) 80 #intensity3.append(frame[Y3min:Y3max+1, X3min:X3max+1].mean()) 81 intensitynoise.append(frame[Ynoisemin:Ynoisemax+1, Xnoisemin:Xnoisemax+1].mean()) 82 print "frame number ",i 83 84 85#Fourier transform 86A=np.fft.fft(intensity1); 87B=np.fft.fft(intensitynoise); 88amplitudeA=abs(A) 89amplitudeB=abs(B) 90 91# データのパラメータ 92N=len(frame_no)#サンプル数 93dt = 0.01 # サンプリング間隔 94freq = np.linspace(0, 1.0/dt, N) # 周波数軸 95 96plt.subplot(2,1,1) 97t1Points=np.arange(len(intensity1))*(1/fps) 98tnoisePoints=np.arange(len(intensitynoise))*(1/fps) 99plt.title("point6 and noise") 100plt.plot(t1Points,intensity1,linewidth=1,color="r") 101plt.plot(tnoisePoints,intensitynoise,linewidth=1,color="k") 102plt.grid(True) 103plt.xlabel("time(s)", fontsize=17) 104plt.ylabel("intensity of PL",fontsize=17) 105plt.legend(fontsize=17) 106plt.xlim(numS/fps,numE/fps)#開始時間、終了時間の設定 107plt.ylim(0,255) 108 109 110plt.subplot(2,1,2) 111plt.plot(freq,amplitudeA,color="r") 112plt.plot(freq,amplitudeB,color="k") 113plt.xlabel('Frequency', fontsize=17) 114plt.ylabel('Amplitude', fontsize=17) 115plt.ylim(0,10000) 116plt.grid() 117plt.legend(fontsize=17) 118 119plt.show() 120

エラーメッセージ

/usr/lib/python2.7/dist-packages/matplotlib/axes/_axes.py:519: UserWarning: No labelled objects found. Use label='...' kwarg on individual plots.
warnings.warn("No labelled objects found. "
Traceback (most recent call last):
File "特定領域の強度とFFT_1.py", line 111, in <module>
plt.plot(freq,amplitudeA,color="r")
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 3154, in plot
ret = ax.plot(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/init.py", line 1814, in inner
return func(ax, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_axes.py", line 1424, in plot
for line in self._get_lines(*args, **kwargs):
File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_base.py", line 386, in _grab_next_args
for seg in self._plot_args(remaining, kwargs):
File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_base.py", line 364, in _plot_args
x, y = self._xy_from_xy(x, y)
File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_base.py", line 223, in _xy_from_xy
raise ValueError("x and y must have same first dimension")
ValueError: x and y must have same first dimension


(program exited with code: 1)
Press return to continue

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

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

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

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

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

1T2R3M4

2019/05/30 11:59

/usr/lib/python2.7ですか? TAGは3.xですが。
退会済みユーザー

退会済みユーザー

2019/05/30 23:35

そうです!python2.7です。 間違えました
guest

回答1

0

エラーメッセージを見る感じ、freqとamplitudeAが1次元かつ長さが同じでなければならないようです。大きさにずれはないでしょうか。

投稿2019/06/19 07:32

amahara_waya

総合スコア1029

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問