继之前搭建了Python+OpenCV的工作环境后,开始了Python环境下的图像处理尝试。

Matplotlib是一个Python下的图形框架,可以很方便地进行图形化显示。可以说是做图像处理和数据分析必装的库。

但就是这个库的使用过程中,遇到了一个奇怪的问题。

1. 现象

在virtualenv建立的虚拟环境中,无法用matplotlib来显示图像。程序运行正常,没有任何错误信息,也可以保存图像,但无法在交互模式中将图像显示在屏幕上。

但换到本机环境中就可以正常显示。

2. 原因

查了好久,大体确认是matplotlib的backend(后端)设置有问题。

关于什么是matplotlib的后端,请参考官方文档。简单地理解,后端就是一个渲染器,用于将前端代码渲染成我们想要的图像。

我们可以查看一下目前的后端设置。

(cv)lai@Chen:~/work/cv$ python

Python 3.4.3+ (default, Oct 14 2015, 16:03:50)

[GCC 5.2.1 20151010] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import matplotlib

>>> matplotlib.get_backend()

'agg'

目前是agg,但为了正确将图像显示在屏幕上,需要设置为TkAgg。

3. 解决办法

首先安装几个依赖库。

$ sudo apt-get install tcl-dev tk-dev python-tk python3-tk

然后进入虚拟环境,用pip卸载已经安装的matplotlib库。

$ pip uninstall matplotlib

然后重新安装matplotlib。

$ pip install matplotlib

参考的解决方案中是通过下载源码来重新编译安装matplotlib,但我发现直接安装预编译的版本也可以实现。

再来看一下目前的后端设置。

(cv)lai@Chen:~/work/cv$ python

Python 3.4.3+ (default, Oct 14 2015, 16:03:50)

[GCC 5.2.1 20151010] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import matplotlib

>>> matplotlib.get_backend()

'TkAgg'

后端设置已经被改过来了。

4. 测试

使用如下测试代码,用于同时显示原始图片和快速傅里叶变换后的结果。

import cv2

import numpy as np

from matplotlib import pyplot as plt

img = cv2.imread('apple.jpg', 0)

dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)

dft_shift = np.fft.fftshift(dft)

magnitude_spectrum = 20 * \

np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))

plt.subplot(121).imshow(img, cmap='gray')

plt.title('Input Image'), plt.xticks([]), plt.yticks([])

plt.subplot(122).imshow(magnitude_spectrum, cmap='gray')

plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])

plt.savefig('a.png', format='png')

plt.show()

显示结果如下:

运行结果

matplotlib可以正确地在屏幕上显示图像了。

python图形显示不出来_Matplotlib无法显示图像的问题相关推荐

  1. python绘制3d坐标轴_matplotlib在python上绘制3D散点图实例详解

    大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatte ...

  2. 如何用python绘制灰度直方图_python如何显示图像的灰度直方图-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 python opencv处理 ...

  3. python imshow函数_opencv学习之显示图像-imshow函数

    序 上一篇opencv学习之读取图像-imread函数介绍完opencv读取图片函数imread,这次来介绍与它对应的图像显示函数imshow. imshow函数 imshow函数功能 imshow的 ...

  4. python画平行坐标图_Matplotlib中的平行坐标图

    使用传统的绘图类型可以相对直观地查看二维和三维数据.即使是四维数据,我们也经常能找到显示数据的方法.不过,4维以上的维度越来越难以显示.幸运的是,parallel coordinates plots提 ...

  5. python画图网格线设置_Matplotlib可视化入门,看这一篇就够了

    Matplotlib是 Python 最著名的2D绘图库,提供了丰富的数据绘图工具,主要用于绘制一些统计图形.Matplotlib可用于Python脚本,Python和IPython shell,Ju ...

  6. python坐标轴刻度设置_matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)...

    1.横坐标设置时间格式 import matplotlib.pyplot as plt import matplotlib.dates as mdates # 配置横坐标为日期格式 plt.gca() ...

  7. python画画加粗_Matplotlib'粗体'字体 - python

    跟随this example: import numpy as np import matplotlib.pyplot as plt fig = plt.figure() for i, label i ...

  8. python 坐标轴刻度 格式_matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)...

    1.横坐标设置时间格式 import matplotlib.pyplot as plt import matplotlib.dates as mdates # 配置横坐标为日期格式 plt.gca() ...

  9. python 折线图 尾部_Matplotlib 折线图plot()所有用法详解

    散点图和折线图是数据分析中最常用的两种图形.其中,折线图用于分析自变量和因变量之间的趋势关系,最适合用于显示随着时间而变化的连续数据,同时还可以看出数量的差异,增长情况. Matplotlib 中绘制 ...

最新文章

  1. 某阿里程序员女朋友吐槽男友整天玩失踪!早晨问候一声,晚上十一点才回信息!中间完全消失!阿里加班真的这么恐怖吗?...
  2. Win2008R2配置WebDeploy发布网站
  3. 2019.1.7 区块链论文翻译
  4. 使用Deinstall专用工具删除Oracle Database
  5. php5.3 延迟静态绑定 static关键字
  6. composer php 打包图片,composer 打包到 packagist
  7. mongodb可视化工具robo3T的安装和使用
  8. 【转】android 完全退出应用程序
  9. 51蜂鸣器播放提示音和音乐(完整代码可附赠Proteus仿真)
  10. Stata15重编码
  11. c语言编程入门教程网易,C语言入门视频教程汇总,看了无师自通
  12. apache配置基于域名访问
  13. 调用百度API实现人脸识别
  14. 标准的html 样式,CSS 样式表代码规则
  15. 基于STM32F03RCT的多路频率占空比可调PWM输出
  16. 无人驾驶感知篇之融合(一)
  17. NBOJv2 Problem 1009 蛤玮的魔法(二分)
  18. 完美解决迅雷极速版强制升级到迅雷X
  19. jpanel麻将自动打牌,碰牌,杠牌
  20. 联想基于OpenStack的高可用企业云平台实践

热门文章

  1. Vue中分页组件的用法
  2. 头歌HTML实训笔录
  3. 2023免费的电脑恢复丢失数据软件EasyRecovery
  4. DirectPlay分组功能 (转)
  5. centos下的vim安装
  6. 九亿少女的梦(python信息处理)
  7. 知乎万赞:什么样的程序员在35岁以后依然被公司抢着要?打破程序员“中年危机”
  8. 关于纯前端excel上传、下载功能
  9. Mongodb入门(CRUD与安装)
  10. 新手学开车,起步,停车,倒库移库,练习图解,开车基本技巧