在jupyter笔记本中以原始分辨率显示图像

时间:2020-02-10 05:47:36

标签: python opencv matplotlib jupyter-notebook imshow

我有一个非常高分辨率(3311,4681,3)的图像,我想使用opencv在我的jupyter笔记本中显示该图像,但是由于其他答案表明无法在jupyter笔记本中使用cv2.imshow,因此我用plt.imshow来做同样的事情,但是问题是如果我想显示更大的图像,我必须定义fig_size参数。如何在jupyter笔记本中读取原始分辨率的图像,或者可以在另一个窗口中打开图像?

这是我尝试过的:

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()

enter image description here

所以基本上我希望我的图像以原始分辨率在jupyter笔记本或其他窗口中显示。

2 个答案:

答案 0 :(得分:3)

您可以通过计算相应的图形大小来imshow以原始分辨率matplotlib.rcParams['figure.dpi'],该图形大小取决于matplotlib的dpi(每英寸点数)值。默认值为100 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 ... 设置为较大的值来解决此问题,例如

%matplotlib inline

您在第二个窗口中打开图像的第二条建议将像这样工作,即您使用Ipython magic命令更改了matplotlib后端,方法是将上述示例中的%matplotlib qt # opens the image in an interactive window with original resolution 替换为例如

%matplotlib notebook    # opens the image in an interactive window 'inline'

{{1}}

有关更多的后端可能性,请参见here。请注意,还必须先计算原始图形的大小。

答案 1 :(得分:0)

为了以完整的原始分辨率显示图像, 您也可以使用PIL

from PIL import Image
img = Image.open(r'0261b27431-07_D_01.jpg')
img
相关问题