我有一个非常高分辨率(3311, 4681, 3)的图像,我想使用 opencv 在我的 jupyter 笔记本中显示它,但正如其他答案所述,不可能在中使用 cv2.imshow
jupyter 笔记本,所以我使用 plt.imshow 来做同样的事情,但问题是如果我想显示更大的图像,我必须定义Fig_size参数。如何在 jupyter Notebook 中以其原始分辨率读取图像,或者是否可以在另一个窗口中打开图像?
这是我尝试过的:
import cv2
from matplotlib import pyplot as plt
%matplotlib inline
img = cv2.imread(r"0261b27431-07_D_01.jpg")
plt.figure(figsize= (20,20))
plt.imshow(img)
plt.show()
所以基本上我希望我的图像在 jupyter 笔记本或另一个窗口中以其原始分辨率显示。
最佳答案
您可以通过计算相应的图形尺寸以原始分辨率imshow
图像,该尺寸取决于matplotlib的dpi(每英寸点数)值。默认值为 100 dpi,存储在 matplotlib.rcParams['figure.dpi']
中。
所以imshow
像这样的图像
import cv2
from matplotlib import pyplot as plt
import matplotlib
%matplotlib inline
# Acquire default dots per inch value of matplotlib
dpi = matplotlib.rcParams['figure.dpi']
img = cv2.imread(r'0261b27431-07_D_01.jpg')
# Determine the figures size in inches to fit your image
height, width, depth = img.shape
figsize = width / float(dpi), height / float(dpi)
plt.figure(figsize=figsize)
plt.imshow(img)
plt.show()
以大分辨率打印它,但缺点是轴标签与大图像相比很小。您可以通过将其他 rcParams 设置为更大的值来解决此问题,例如
# Do the same also for the 'y' axis
matplotlib.rcParams['xtick.labelsize'] = 50
matplotlib.rcParams['xtick.major.size'] = 15
matplotlib.rcParams['xtick.major.width'] = 5
...
<小时/>
您在另一个窗口中打开图像的第二个建议将像这样工作,即您使用 Ipython magic 命令更改 matplotlib 后端,方法是将上面示例中的 %matplotlib inline
替换为,例如
%matplotlib qt # opens the image in an interactive window with original resolution
或
%matplotlib notebook # opens the image in an interactive window 'inline'
参见here更多后端可能性。请注意,原始图形尺寸的计算也必须事先完成。
关于python - 在 jupyter 笔记本中以原始分辨率显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60144693/