2017-11-08 19 views
1

私はOpencvを使ってカメラを開いた後、画像bu matplotlibを表示したいと思います。 ただし、フレームがフリーズします。 matplotlibをリアルタイムで使用できますか? ありがとうございました!matplotlibをリアルタイムでどのように使用できますか?

cap = cv2.VideoCapture(0)  
while (True): 
    ret, frame = cap.read() 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 
    plt.subplot(1,2,1), plt.imshow(frame, interpolation='nearest') 
    plt.show() 

答えて

2

plt.ion()を使用して、対話型プロットを有効にすることができます。

import matplotlib.pyplot as plt 
import cv2 

cap = cv2.VideoCapture(0)  
plt.ion() 

while (True): 
    ret, frame = cap.read() 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 
    plt.subplot(1,2,1), plt.imshow(frame, interpolation='nearest') 
    plt.pause(0.001) 
    plt.show() 

このソリューションでは、すべてを再配置し、表示する各フレームの新しいサブプロットを作成します。これは非常に非効率的でゆっくりです。この回答を確認するSpeed up live plotting of a footage (cv2)

+0

これは機能します!ありがとうございました!そしてplt.pause(0.001)、0.001を変更してリアルタイムをより速くする方法はありますか? –

+0

matplotlib pltのために遅くなります。私は遅延を減らすことはそれを多く改善するとは思わない。 –

+0

このソリューションでは、すべてを置換し、表示する各フレームの新しいサブプロットを作成します。これは非常に非効率的です。例えば、 [この質問](https://stackoverflow.com/questions/45586983/speed-up-live-plotting-of-a-footage-cv2)これを防止する方法について。私はそれの重複としてマークした。 – ImportanceOfBeingErnest

関連する問題