我如何实时使用matplotlib?

时间:2017-11-08 05:33:13

标签: python opencv image-processing matplotlib

我使用Opencv打开相机,然后我想显示图像bu 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()

1 个答案:

答案 0 :(得分: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)