NSInvalidArgumentException Matplotlib OS X

在尝试使用 OpenCV 并尝试创建直方图(并使用 Matplotlib 绘制它)时,我遇到了一个无法解决的错误。我已经尝试将 TkAgg 指定为后端无济于事。所有这些都在一个虚拟环境中,运行 Python 3.7 和 openCV4。


相关代码:


import matplotlib

matplotlib.use("TkAgg")


ap = argparse.ArgumentParser()

ap.add_argument("-i", "--image", required=True,

        help = "Path to image")

args = vars(ap.parse_args())


image = cv2.imread(args["image"])


image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

cv2.imshow("Original", image)


hist = cv2.calcHist([image], [0], None, [256], [0,256])


plt.figure()

plt.title("Grayscale Histogram")

plt.xlabel("Bins")

plt.ylabel("# of Pixels")

plt.plot(hist)

plt.xlim([0, 256])

plt.show()

cv2.waitKey(0)

我尝试过的事情: - 将 TkAgg 设置为 Matplotlib 的后端,未成功 - 创建新的虚拟环境并重新链接 openCV,未成功

我正在跟进一本书,所以我不相信这是任何类型的语法错误,肯定是配置之一。

编辑:我也尝试在 ~/.matplotlib/matplotlibrc 中指定 TkAgg 作为后端


慕容森
浏览 295回答 2
2回答

倚天杖

我设法通过将后端更改为 pyQT5 使其在 virtualenv 中运行安装 matplotlib 和 pyqt 并将渲染后端更新为 qt。将它或 pip 或 pip3 直接符号链接到您的 virtualenvpip3 install matplotlibpip3 install PyQt5要选择后端,你可以试试这个touch ~/.matplotlib/matplotlibrcecho "backend: PyQt5" >> ~/.matplotlib/matplotlibrc或者在您的源代码中始终在任何其他 matplotlib 使用之前添加它import matplotlibmatplotlib.use("Qt5Agg")

青春有我

玩了一会后,我删除了虚拟环境并使用 Python3 的内置 -m venv 命令创建了一个新环境,重新链接 OpenCV,通过 Homebrew 安装了 pyqt --with-python3,并指定了 Matplotlib.use("MacOSX" ) 在我的导入行之后。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python