当在pdb模式下在命令提示符下键入imshow(img)时,不会显示matplotlib数字

Yon*_*son 4 python debugging matplotlib spyder pdb

有没有人在调试模式(PDB)中使用spyder遇到此问题?它在交互模式下工作正常.

一个建议的解决方案是使用pause(1)而不是show()之后imshow(img).

有没有更好的方法在调试模式下查看我的数字?如果有,那将是一个真正的Matlab杀手!

Yon*_*son 9

回答我自己的问题.显然这是错误,这pause(1)是在PDB模式下查看情节图的唯一方法.

另一种方法是通过将整个程序剪切并粘贴到命令行中来将整个程序作为脚本运行.这种方式show()可以代替使用pause(1).这样做的好处是可以放大图.使用时pause(1)只能在暂停期间使用.

例如:

import numpy as np
from matplotlib import pyplot as plt
import cv2

file_name = 'myimage.jpg'
img = cv2.imread(file_name)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,150,100,apertureSize = 3)

#display image
plt.figure(1)
plt.imshow(edges)
plt.title('edges of image')
plt.show()
Run Code Online (Sandbox Code Playgroud)

编辑:

我刚刚在python中发现了一个很好的替代绘图工具guiqwt.

与matplotlib不同,它适用于pdb

import numpy as np
from guiqwt.pyplot import *
figure("simple plot")
subplot(1, 2, 1)
plot(x, np.tanh(x+np.sin(12*x)), "g-", label="Tanh")
legend()
subplot(1, 2, 2)
plot(x, np.sinh(x), "r:", label="SinH")
show()
Run Code Online (Sandbox Code Playgroud)

您可以将它作为python(x,y)中包含的包的一部分来获取,或者您可以从此处下载它

EDIT2:

我刚刚发现Pycharm发布的最新IDE 支持matplotlib要好得多.您可以使用plt.imshow(img),甚至不必使用plt.show()以调试模式显示图像