python图形显示不出来_Matplotlib无法显示图像的问题
继之前搭建了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无法显示图像的问题相关推荐
- python绘制3d坐标轴_matplotlib在python上绘制3D散点图实例详解
大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatte ...
- 如何用python绘制灰度直方图_python如何显示图像的灰度直方图-女性时尚流行美容健康娱乐mv-ida网...
女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 python opencv处理 ...
- python imshow函数_opencv学习之显示图像-imshow函数
序 上一篇opencv学习之读取图像-imread函数介绍完opencv读取图片函数imread,这次来介绍与它对应的图像显示函数imshow. imshow函数 imshow函数功能 imshow的 ...
- python画平行坐标图_Matplotlib中的平行坐标图
使用传统的绘图类型可以相对直观地查看二维和三维数据.即使是四维数据,我们也经常能找到显示数据的方法.不过,4维以上的维度越来越难以显示.幸运的是,parallel coordinates plots提 ...
- python画图网格线设置_Matplotlib可视化入门,看这一篇就够了
Matplotlib是 Python 最著名的2D绘图库,提供了丰富的数据绘图工具,主要用于绘制一些统计图形.Matplotlib可用于Python脚本,Python和IPython shell,Ju ...
- python坐标轴刻度设置_matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)...
1.横坐标设置时间格式 import matplotlib.pyplot as plt import matplotlib.dates as mdates # 配置横坐标为日期格式 plt.gca() ...
- python画画加粗_Matplotlib'粗体'字体 - python
跟随this example: import numpy as np import matplotlib.pyplot as plt fig = plt.figure() for i, label i ...
- python 坐标轴刻度 格式_matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)...
1.横坐标设置时间格式 import matplotlib.pyplot as plt import matplotlib.dates as mdates # 配置横坐标为日期格式 plt.gca() ...
- python 折线图 尾部_Matplotlib 折线图plot()所有用法详解
散点图和折线图是数据分析中最常用的两种图形.其中,折线图用于分析自变量和因变量之间的趋势关系,最适合用于显示随着时间而变化的连续数据,同时还可以看出数量的差异,增长情况. Matplotlib 中绘制 ...
最新文章
- 某阿里程序员女朋友吐槽男友整天玩失踪!早晨问候一声,晚上十一点才回信息!中间完全消失!阿里加班真的这么恐怖吗?...
- Win2008R2配置WebDeploy发布网站
- 2019.1.7 区块链论文翻译
- 使用Deinstall专用工具删除Oracle Database
- php5.3 延迟静态绑定 static关键字
- composer php 打包图片,composer 打包到 packagist
- mongodb可视化工具robo3T的安装和使用
- 【转】android 完全退出应用程序
- 51蜂鸣器播放提示音和音乐(完整代码可附赠Proteus仿真)
- Stata15重编码
- c语言编程入门教程网易,C语言入门视频教程汇总,看了无师自通
- apache配置基于域名访问
- 调用百度API实现人脸识别
- 标准的html 样式,CSS 样式表代码规则
- 基于STM32F03RCT的多路频率占空比可调PWM输出
- 无人驾驶感知篇之融合(一)
- NBOJv2 Problem 1009 蛤玮的魔法(二分)
- 完美解决迅雷极速版强制升级到迅雷X
- jpanel麻将自动打牌,碰牌,杠牌
- 联想基于OpenStack的高可用企业云平台实践