Python OpenCV的matplotlib.pyplot有问题

问题描述

系统信息(版本)

  • OpenCV => 4.4.0.44
  • 操作系统/平台=> Ubuntu 18.04.5
  • 编译器=> Visual Studio代码

详细说明

当我导入matplotlib.pyplot并使用cv2.imshow时,除了空格键和Esc之外,该窗口将仅按我按下的任何键关闭。以下代码不会运行,但不会返回错误,只是停止运行。我将opencv从4.2升级到4.4后,它开始了。我曾尝试仅导入matplotlib和其他matplotlib模块,它们不会引起任何问题。

Matplotlib版本3.3.2

复制步骤

import cv2
import matplotlib.pyplot

cap = cv2.VideoCapture("video/7.mp4")
while True:
    (ret,frame) = cap.read()
    cv2.imshow("Processed Output",frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cv2.destroyAllWindows()
cap.release()
print("End")

编辑:已解决 一起使用时,似乎是PyQt5和OpenCV Qt5存在问题。您可以详细了解问题here。要解决该问题,您需要按如下所示导入matplotlib

import matplotlib
matplotlib.use('tkagg')
import matplotlib.pyplot as plt

解决方法

我找到了解决方案。当一起使用时,问题似乎出在 PyQt5 和 OpenCV Qt5 您可以阅读有关问题 here 的更多信息。要解决此问题,您需要按如下方式导入 matplotlib

import matplotlib
matplotlib.use('tkagg')
import matplotlib.pyplot as plt