Jupyter Notebook怎么在代码中显示图片

夜雪君_7984

夜雪君_7984

2026-08-27

960人浏览

原创

ipython.display.image 是代码单元格中最快显示本地或网络图片的方式,路径需相对notebook目录,中文空格加引号;matplotlib.pyplot.imshow 适用于数组图像,注意bgr转rgb、cmap和数值范围;pil需配合display(),不可用show();%%html和markdown不支持动态逻辑。

jupyter notebook怎么在代码中显示图片

用 IPython.display.Image 最快显示本地或网络图片

这是代码单元格里最轻量、最可靠的方式,不依赖图像解码逻辑,也不强制渲染坐标轴。只要路径对、文件可读,就能立刻出图。

常见错误现象:FileNotFoundError 或执行后空白——本质是路径没解析对,不是库的问题。

  • filename 参数必须是相对于当前 notebook 文件所在目录的路径(不是 Python 工作目录)
  • 中文路径或空格路径要加引号,但别用 raw string(r"中文\图.jpg" 在 Windows 下可能失效)
  • 网络图片用 url 参数,不是 filename;二者不能混用
  • 如果图片在子目录,写成 filename="data/imgs/photo.png",别漏掉引号

用 matplotlib.pyplot.imshow 显示数组型图像(OpenCV/PIL/NumPy 输出)

当你用 cv2.imread、PIL.Image.open 或自己生成图像数组时,必须走这条路。它本质是画图,不是“插入资源”,所以对数据格式敏感。

容易踩的坑:OpenCV 读图默认是 BGR,而 plt.imshow 按 RGB 渲染,直接显示会偏色(比如人脸发青)。

  • OpenCV 图像必须先转 RGB:plt.imshow(cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB))
  • 灰度图加 cmap='gray',否则显示为伪彩色
  • 数组值范围必须是 [0, 255](uint8)或 [0, 1](float),超出会导致全黑或全白
  • 记得调 plt.axis('off') 关坐标轴,否则干扰视觉

用 PIL.Image + display() 处理后再显示

适合需要缩放、裁剪、格式转换等预处理的场景。PIL 不负责渲染,只做图像对象管理,最终靠 Jupyter 的 display 机制输出。

Jupyter Notebook 7.5.4
Jupyter Notebook 7.5.4

Jupyter Notebook 7.5.4 官方 PyPI wheel 包下载,适合用于本地交互式代码运行、数据分析、教学演示和配置文件实践。

下载

注意:img.show() 是弹系统窗口,**在 Jupyter 里完全无效**,别用。

  • 正确写法是:from IPython.display import display,然后 display(img)
  • img = PIL.Image.open(...) 后可链式调用:img.resize((300, 200)).convert('RGB')
  • 如果图像模式是 'P'(索引色,如某些 PNG),需先 .convert('RGBA') 或 'RGB' 再显示,否则报错
  • 不支持直接传 URL,得先用 requests.get 下载再用 BytesIO 构造

为什么 %%html 和 Markdown 单元格不算“代码中显示”

它们确实能显示图片,但不符合“在代码单元格中执行逻辑并输出图像”的需求。前者是内联 HTML 渲染,后者根本绕过 Python 执行环境。

真正需要“代码中显示”的典型场景:批量读图、模型输出可视化、训练过程截图、图像增强效果对比——这些都要求变量参与、路径动态拼接、条件判断后才决定是否显示。

这时候硬塞进 Markdown 单元格,就失去了可编程性;用 %%html 则无法响应变量值变化,也难做异常 fallback(比如图片缺失时显示提示文字)。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1751

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4544

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1729

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

26777

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3247

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3267

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1183

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2523

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程