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

问题描述 投票:1回答:1

我有一个非常高分辨率(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笔记本或其他窗口中显示。

python opencv matplotlib jupyter-notebook imshow
1个回答
0
投票

您可以通过计算相应的图形尺寸来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 inline替换为例如来更改matplotlib后端,>

%matplotlib qt         # opens the image in an interactive window with original resolution

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

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

© www.soinside.com 2019 - 2024. All rights reserved.