2019-05-08 14:54:59 Prince_IT 阅读数 5674

【转】https://blog.csdn.net/u014696921/article/details/69935802
车辆是视频场景中最关键的对象之一,车辆 和 人 是视频检测永恒的话题。

   车辆检测 是车辆分析中关键的一步,是后续进行 车型识别、车标识别、车牌识别、车辆特征 的基础。

   关于检测的方法和框架有很多,不外乎是特征训练和分类,这里推荐两篇综述性文章:

[1] Benenson R, Omran M, Hosang J, et al.Ten Years of Pedestrian Detection, What Have We Learned? [M]// Computer Vision - ECCV 2014 Workshops. Springer International Publishing, 2014:613-627.

[2] P.Dollar, C. Wojek,B. Schiele, et al.Pedestrian detection: an evaluation of the state of the art[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2012, 34(4): 743-761.

• 开放检测算法框架及代码:

   关于目标检测的框架及代码非常多,这里列出来几个:

名声在外的 DPM 

    Deformable Part Models,专业做行人检测,对于车辆检测等刚体目标 并无太多优势。

    参考代码:https://people.eecs.berkeley.edu/~rbg/latent/index.html

INRIA Object Detection and Localization Toolkit

    基于HOG特征的行人检测方法,由Dalal于 2005年 提出,经典中的经典(虽然稍微有点老)。

    参考代码:http://pascal.inrialpes.fr/soft/olt/

doppia code

    这是一个代码集合,2015年 更新,内容包含:

a) Pedestrian detection at 100 frames per second, R. Benenson. CVPR, 2012.

b) 实时的 Stixels estimation without depth map computation.

c) Fast stixels estimation for fast pedestrian detection.

d) Seeking the strongest rigid detector.

e) Ten years of pedestrian detection, what have we learned?

f) Face detection without bells and whistles.

    下载地址:https://bitbucket.org/rodrigob/doppia

Pitor Dollar Detector

    有一个代码集合,大牛名字命名,全称为:Piotr’s Computer Vision Matlab Toolbox

    下载地址:https://pdollar.github.io/toolbox/

• 开放训练数据集 (行人检测):

MIT 行人数据集

     MIT 早期公开数据集(2000年),共924张行人图片(ppm格式,宽高为64×128),只含正面和背面两个视角,无负样本,未区分训练集和测试集。

     该数据集目前已很少使用,但由于公开较早,影响力比较大,因此作者把它列在第一个。

     下载地址:http://cbcl.mit.edu/software-datasets/PedestrianData.html

Caltech Pedestrian 行人数据集

     该数据库是目前规模较大的行人数据库(2014年),采用车载摄像头拍摄,约10个小时左右,视频的分辨率为640×480,30帧/秒。

     标注了约250,000帧(约137分钟),350000个矩形框,2300个行人,提供了相应的Matlab工具包。

     下载地址:http://www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/

NICTA 行人数据集

     目前规模较大的静态图像行人数据库,25551张含单人的图片,5207张高分辨率非行人图片(2008年)。

     数据库中已分好训练集和测试集,方便不同分类器的比较。

     下载地址:http://www.nicta.com.au/category/research/computer-vision/tools/automap-datasets/

INRIA Person

     目前使用最多的静态行人检测数据集,由“HOG+SVM”的作者Dalal创建(2005年)。

     训练集有正样本614张(包含2416个行人),负样本1218张;测试集有正样本288张(包含1126个行人),负样本453张。

     下载地址:http://pascal.inrialpes.fr/data/human/

     另外,还有 TUD、ETHZ、USC、CVC 等数据集,当然你可能也知道大名鼎鼎的 ImageNet(里面会有少部分行人),当然公版数据集也仅仅在于自己测试用,想要得到更好的检测效果,你必须训练自己的数据集。

• 开放训练数据集 (车辆检测):

MIT - CBCL 车辆数据集

    由 MIT 提供的车辆数据集(2000年),主要用于车辆检测和识别中,共有516张128*128格式为ppm的图像。

    下载地址:http://cbcl.mit.edu/software-datasets/CarData.html

KITTI
    这是一个测试交通场景中 车辆检测、追踪、语义分割等算法的公开数据集。由丰田汽车主导,目前在测试自动驾驶等识别算法中应用比较多。

    实际上,KITTI 已经成为 ADAS行业的 实际效果检测标准。

    下载地址:http://www.cvlibs.net/datasets/kitti/index.php

UA-DETRAC

    车辆检测和跟踪的大规模数据集,可以作为 KITTI 的补充。 

    数据集主要拍摄于北京和天津的道路过街天桥(京津冀场景有福了),并 手动标注了 8250 个车辆 和 121万目标对象外框。

    附带的 Toolkit 统一了数据接口,里面包含了几种 State-Of-The-Art 的检测和跟踪方法(大家可以进行测试比较)。

    数据集:DETRAC-Train-Images (5.22GB, 60 sequences)

                  DETRAC-Test-Images (3.94GB, 40 sequences)

    检测:DETRAC-Train-Detections (DPM, ACF, R-CNN, CompACT)

              DETRAC-Test-Detections (DPM, ACF, R-CNN, CompACT)

    下载地址:http://detrac-db.rit.albany.edu/

• ACF 算法

   ACF 是指 Aggregate Channel Features,包含在 Piotr Dollar 工具箱内(目前更新至3.50),作为目标检测算法,在行人检测领域有不错的表现。

   这里我们把他应用在车检上,借助 DETRAC 数据集进行训练。

   Piotr Dollar 工具箱采用 Matlab接口,因此,在实际应用中需要 封装为 C++接口 ,基本步骤如下:
  1. 安装Matlab编译器

    命令行输入mex -setup,根据提示安装matlab compilers;

    注意选择compiler类型,matlab自带的编辑器 或者对应你用的VS版本。

  2. 安装生成器

    命令行中输入mbuild -setup。

  3. 生成c++库文件

    调用命令mcc -W cpplib:XXX -T link:lib XXX.m;

    前面的XXX表示生成的dll文件名,后面的XXX.m对应matlab源文件,生成后文件包括:XXX(.h. lib .dll)。

    关于 Matlab 的其他调用方式 根据需要也可以尝试。
    

数据训练:

   作者采用 Detrac 数据进行训练,具体训练过程按住不表,直接看  检测效果(近端检测还是很不错的):
2019-05-10 17:11:59 weixin_44653197 阅读数 111

操作系统:Win10

工具:VS2019、OpenCV4.0.0

测试结果 在这里插入图片描述 测试代码 #include <opencv.hpp> #include int main(int argc, char* argv[])
{
//imread读取图像,返回Mat类用于存储
cv::Mat src_mat = cv::imread(“C:/Users/Cocos/Desktop/1.JPG”);

//判断是否读取成功
if (src_mat.empty())
{
std::cout << “读取文件失败” << std::endl;
return EXIT_FAILURE;
}
std::cout << “读取文件成功” << std::endl;
//创建标识符为hello的窗体
cv::namedWindow(“hello”,cv::WINDOW_AUTOSIZE);
//将srt_mat显示在hello窗体上
cv::imshow(“hello”, src_mat);
cv::waitKey(0);
return EXIT_SUCCESS;
}

2010-12-30 18:20:00 weixin_30657999 阅读数 16

你一定在各种关于图像处理的书籍,教程,课件,网页中看到这张图

至少,我学习图像处理的过程中很多次的用的这张图

这张标准测试图的名字叫‘Lena.jpg’

 

1973年的夏天,美国南加州大学信号与图像处理研究所里,年轻的助理教授亚历山大(Alexander Sawchuk)和研究员威廉(William Pratt)正为一篇学术论文忙碌,试图从一叠常用的测试图片中找出一张适合测试压缩算法的图片:最好是人脸,表面光滑,内容多层次。不过这些单调陈旧,如同早期电视画面的图片很快就让他们失望了。历史在这里开了个小小的玩笑,正巧有人拿着一本《花花公子》杂志(1972年11月刊)到实验室来“串门”,当期的playboy女郎雷娜(Lena Söderberg)立刻吸引了众人的目光。亚历山大发现这张有着光滑面庞和繁杂饰物的图片正好符合要求,于是,他们撕下这张彩图,将上半部扫描成一张512×512像素大小的图片,“雷娜图”就此诞生。

 

1988年,一家瑞典的电脑出版社联系并采访到了雷娜,这是她十五年来首次得知自己的照片被应用在计算机行业里,兴奋和惊讶之情溢于言表。1997年,在《花花公子》杂志社的帮助下,图像科学和技术会议(IS&T)的筹办方正式邀请雷娜参加于当年五月份在波士顿召开的五十周年大会。这离当初雷娜图的诞生,已经过去了约四分之一个世纪,当初的年轻教授已成为业内的知名学者,而红颜少女的鬓边终于也见到了白发。“他们肯定早已厌烦我了,这么多年都看着同一张照片。”雷娜在会议上受到了热情的欢迎,她看到了许多基于雷娜图的研究工作,并忙于在一张又一张自己的照片上签名。

 

 

雷娜图为何如此受欢迎?《IEEE图像处理期刊》的主编大卫(David Munson)认为有两个原因:“首先,这张图片含有细节部分、平坦区域、阴影和纹理,有利于测试各种不同的图像处理算法。其次,这是一个非常迷人的女性照片,图像处理领域(多数人为男性)愿意使用一张他们认为很有吸引力的图片也并不令人惊奇。” 这张图片含有丰富的频段,包括处于低频的光滑皮肤和处于高频的羽毛,很适合做为测试图片。而人眼对于人脸的细节差别感受也远比一般的景物更为明显。

 

最后,我们来看看最开始发表在《花花公子》的原始Lena图,我想你一定会大跌眼镜的

好吧。要是有什么不和谐的地方,那我也没办法了


 


转载于:https://www.cnblogs.com/xianglan/archive/2010/12/30/1922408.html

2018-08-15 14:47:55 Wu_whiteHyacinth 阅读数 358

对于图像集分类,至关重要问题包括如何简单有效地表示图像集以及处理异常值。基于协作的原型表示的图像集分类,这种方法一个明确的物理意义:通过寻找原型来对数据进行压缩,同时移除那些降低分类性能的异常值。与其他方法不同的是:对于图像集,该方法确地选择了可以恰当地描述这个图像集的原型,对于测试集,该方法在由样本组合成的图库集上协同表示。解决了表示系数之后,测试集和每个图库集之间的距离可以用来评估分类。

对于那些基于仿射包/凸包的方法,图像集可以被表示为在特征空间的凸包或仿射船体。通过对的相似性:几何距离的评估,得到两组在这两个仿射包上最近的成对点。最近邻模型之所以受欢迎,主要是因为两个原因首先,这个模型不需要做分布假设
和参数估计。第二个原因是这个模型的性能并不太依赖于采样密度。最近的点方法取决于仿射包顶点的位置,分类在图像集中的异常值会使性能恶化:

比如上图,三个仿射包:测试集和图像集1,图像集2,测试集和图像集1的距离为dp1,和图像集2的距离为dp2,但是由于图像集2上有一个异常值的存在使得dp,f2<dp1<dp2,从而导致错误的分类结果。

基于协作的原型表示的图像集分类((ISCER)步骤如下:

1)显式地检测和移除离群值,找到图像集对应的的代表性子集中的任意一点都可以由代表点的线性组合表示得到。最终获得图库集中每个集合的紧凑表示

2)计算得到最接近的协作表示距离,该距离用于图像集分类。

直观图如下:

与基于协作表示的方法相比,ISCER由于并没有使用图库集中的所有图像所以内存需求也大大的降低。此外压缩的图库集集将有助于快速解决协同表示的优化问题中涉及的用于分类的表示系数 α、β。可想而知,计算时间也大大降低。

与通过正则化约束减少了异常值的影响的方式不同。ISCER显式地检测和删除显著的降低分类性能的异常值。ISCRE中的字典学习只是简单地定义对于画廊中所有图像集有相同的数目的原子。这不是普遍的,因为不同的图像集通常需要不同数量的原子来编码。而数据自我表达可以自适应地确定能够很好的重建数据集中的真实数据的原型数量。这些选择出来的样本在图像集上是对应凸壳的顶点因此,他有一个清晰的物理意义和几何图形解释。

这种方法主要贡献:

1)明确地检测和拒绝会显著降低分类性能异常值

2)在集合中找到了一个的样本有一个清晰的物理意义:集合的凸壳的顶点,这对进一步的分析是有益的

3)自适应地选择可以捕获的原型图像在外观和大小上的变化。这对于保持集合信息与分类相关性能一致来说非常重要

4)压缩集数据可以极大地减少优化找到用于分类的协作表示系数的时间

算法步骤:
1)代表性的图片的寻找

字典学习得到的原子基本上和原始数据不一致并且缺少明确的物理意义。因此,得到的结果不能被认为是数据的良好典范或代表点数据集。为了获得对于图像集分类具有代表性的图像,我们可以根据工作学习计划修改字典。

第i个图像的数据矩阵表示为是图像的一个d维特征, 代表在这个集合中的N个图像,通过解决以下优化问题得到

 C是一个行稀疏的系数矩阵,||C||0表示C中非0的行的行数,公式(1)的目的就是通过优化得到m<<N个原型能够很好的重建中的所有图像,换句话是,这个集合中的每个图像都可以用这m个原型的一个子集的仿射组合表示。因此,通过选择原型来进行紧凑的表示也被称为物体空间维度减少。

然而,优化问题(1)是np-hard问题,这需要在所有的子集上搜索m列。类似于许多稀疏模型,使用l1范数在优化问题上放松,因此,公式(1)重写为

是矩阵C的每一行的行地l p范数的总和。是一个可选参数,为了使(2)是凸函数,通常选择lp>1。利用拉格朗日乘数法,这个优化问题可以进一步写成:

 为了得到C*的解决方案,使用一种交替的乘数优化框架(ADMM)实现了算法。公式(3)C*的解决方案提供关于代表性图像描述原始图像集的相对重要性的信息,直观地说,行C*具有较大值的非零元素,这就意味着对应于集合中更重要的代表性图像。让秩为k的图像集表示为:  第一个k个原型是通过计算C*每一行的lp范数找到第一组k个样本对它们进行排序:

 选择k个原型对应上面第一个k行,最后,这些k个原型形成了紧凑的表示

图像集通常都会包含一些影响分类性能的异常值,通过选择具有代表性的点的过程中消除在原始数据中的异常值。通过观察,我们可以发现异常值通常是与真实图像的集合不连贯,每个离群值都是它自身的表示。因此,一个异类很容易被自己所表示。但是通过矩阵C*的行发现,异常值并不是严格的由自己表示,一般它是由几个异常值/真实值表示,因此C*中稀疏的行可以用作检测异常值的标准,我们定义在矩阵C*的第i行中行-稀疏指数:

 如果RSI的值接近1,这就意味着这一行所对应的是一个异常值,反之,如果RSI的值接近于0,这就意味着这一行所对应的是一个表示样本,一般来说,当图像的RSI值大于临界值τ0,则就会被认为是一个异常值。

例如,当τ0 = 0.20,我们找到了这些代表样本并发现了异常值的过程,如下图所示:

他们对应的系数矩阵C*如下图所示:

2)图像集的协作表示分类 (同CRC)

2018-04-24 16:11:32 u011106767 阅读数 878

基于matplotlib绘图库的图表参数设置

环境配置

  1. 编程语言:python
  2. 编辑器:jupyter notebook

在使用python语言进行测试模型或者运行代码时,不免会使用到图表的绘制和图像的显示,这里简单说一下matplotlib库中pyplot函数的一些设置问题。

小提醒:

导入所需要的库

import matplotlib.pyplot as plt

若希望将matplotlib绘制的图标嵌入到notebook中,需要执行以下命令:(一般将其放置于import一系列语句的最后)

%matplotlib inline

在使用plt.show()语句进行显示图像时,需要对colormap(image.cmap)进行调整,如果你使用默认的参数属性,可能会带来一点小麻烦。比如,加载的是灰度图,但是由于默认属性,可能显示得并不是原图。

代码示例:

下面看一下代码:

from skimage import io, color, data
from skimage.transform import resize
import matplotlib.pyplot as plt
%matplotlib inline
shape = [128,128] #设置需要的图形尺寸
image_orig = io.imread("./images/rgb/rgb2.jpg")#注意imag文件路径,这里需根据系统调整
image_resize = resize(image_orig,shape)
image_gray = color.rgb2grey(image_resize)
print(image_gray.shape)

plt.figure(1) #创建图表1
ax1 = plt.subplot(131) #在图表1中创建子图(Axes)1
ax2 = plt.subplot(132)
ax3 = plt.subplot(133)


plt.sca(ax1)#选择图表1中子图1为当前活动对象
plt.imshow(image_orig)


plt.sca(ax2)
plt.imshow(image_resize)


plt.sca(ax3)
plt.imshow(image_gray)

运行结果为:
这里写图片描述

这里可以发现,本应该为灰度图像的三张图片竟然是这个鬼样子···
如果将最后一句代码,改为

plt.imshow(image_gray, cmap='gray')

输出就会正常:
这里写图片描述
那么这个cmap就是我们需要注意的地方(当然你也可以使用skimage.io.imshow()),下面来看一下这个plt的一些属性。

plt.rcParams

在一些代码当中,可以提前设置plt绘制的图象属性,比如:

plt.rcParams['figure.size']=(5.0, 4.0)#绘制图表的大小
plt.rcParams['image.interpolation']='nearest'#图像的插补格式
plt.rcParams['image.cmap']='gray'#颜色映射,如果本身就是三通道rgb图,此参数不需要调整

这些代码在程序运行前执行,则程序运行过程中的图标及图像格式都会遵从这些设定。
那么,关于plt.rcParams究竟有哪些参数可以设置,我们可以来看一看,在notebook中运行:

for i in enumerate(plt.rcParams):
    print(i)

运行结果为:

(0, '_internal.classic_mode')
(1, 'agg.path.chunksize')
(2, 'animation.avconv_args')
(3, 'animation.avconv_path')
(4, 'animation.bitrate')
(5, 'animation.codec')
(6, 'animation.convert_args')
(7, 'animation.convert_path')
(8, 'animation.embed_limit')
(9, 'animation.ffmpeg_args')
(10, 'animation.ffmpeg_path')
(11, 'animation.frame_format')
(12, 'animation.html')
(13, 'animation.html_args')
(14, 'animation.writer')
(15, 'axes.autolimit_mode')
(16, 'axes.axisbelow')
(17, 'axes.edgecolor')
(18, 'axes.facecolor')
(19, 'axes.formatter.limits')
(20, 'axes.formatter.min_exponent')
(21, 'axes.formatter.offset_threshold')
(22, 'axes.formatter.use_locale')
(23, 'axes.formatter.use_mathtext')
(24, 'axes.formatter.useoffset')
(25, 'axes.grid')
(26, 'axes.grid.axis')
(27, 'axes.grid.which')
(28, 'axes.hold')
(29, 'axes.labelcolor')
(30, 'axes.labelpad')
(31, 'axes.labelsize')
(32, 'axes.labelweight')
(33, 'axes.linewidth')
(34, 'axes.prop_cycle')
(35, 'axes.spines.bottom')
(36, 'axes.spines.left')
(37, 'axes.spines.right')
(38, 'axes.spines.top')
(39, 'axes.titlepad')
(40, 'axes.titlesize')
(41, 'axes.titleweight')
(42, 'axes.unicode_minus')
(43, 'axes.xmargin')
(44, 'axes.ymargin')
(45, 'axes3d.grid')
(46, 'backend')
(47, 'backend.qt4')
(48, 'backend.qt5')
(49, 'backend_fallback')
(50, 'boxplot.bootstrap')
(51, 'boxplot.boxprops.color')
(52, 'boxplot.boxprops.linestyle')
(53, 'boxplot.boxprops.linewidth')
(54, 'boxplot.capprops.color')
(55, 'boxplot.capprops.linestyle')
(56, 'boxplot.capprops.linewidth')
(57, 'boxplot.flierprops.color')
(58, 'boxplot.flierprops.linestyle')
(59, 'boxplot.flierprops.linewidth')
(60, 'boxplot.flierprops.marker')
(61, 'boxplot.flierprops.markeredgecolor')
(62, 'boxplot.flierprops.markerfacecolor')
(63, 'boxplot.flierprops.markersize')
(64, 'boxplot.meanline')
(65, 'boxplot.meanprops.color')
(66, 'boxplot.meanprops.linestyle')
(67, 'boxplot.meanprops.linewidth')
(68, 'boxplot.meanprops.marker')
(69, 'boxplot.meanprops.markeredgecolor')
(70, 'boxplot.meanprops.markerfacecolor')
(71, 'boxplot.meanprops.markersize')
(72, 'boxplot.medianprops.color')
(73, 'boxplot.medianprops.linestyle')
(74, 'boxplot.medianprops.linewidth')
(75, 'boxplot.notch')
(76, 'boxplot.patchartist')
(77, 'boxplot.showbox')
(78, 'boxplot.showcaps')
(79, 'boxplot.showfliers')
(80, 'boxplot.showmeans')
(81, 'boxplot.vertical')
(82, 'boxplot.whiskerprops.color')
(83, 'boxplot.whiskerprops.linestyle')
(84, 'boxplot.whiskerprops.linewidth')
(85, 'boxplot.whiskers')
(86, 'contour.corner_mask')
(87, 'contour.negative_linestyle')
(88, 'datapath')
(89, 'date.autoformatter.day')
(90, 'date.autoformatter.hour')
(91, 'date.autoformatter.microsecond')
(92, 'date.autoformatter.minute')
(93, 'date.autoformatter.month')
(94, 'date.autoformatter.second')
(95, 'date.autoformatter.year')
(96, 'docstring.hardcopy')
(97, 'errorbar.capsize')
(98, 'examples.directory')
(99, 'figure.autolayout')
(100, 'figure.constrained_layout.h_pad')
(101, 'figure.constrained_layout.hspace')
(102, 'figure.constrained_layout.use')
(103, 'figure.constrained_layout.w_pad')
(104, 'figure.constrained_layout.wspace')
(105, 'figure.dpi')
(106, 'figure.edgecolor')
(107, 'figure.facecolor')
(108, 'figure.figsize')
(109, 'figure.frameon')
(110, 'figure.max_open_warning')
(111, 'figure.subplot.bottom')
(112, 'figure.subplot.hspace')
(113, 'figure.subplot.left')
(114, 'figure.subplot.right')
(115, 'figure.subplot.top')
(116, 'figure.subplot.wspace')
(117, 'figure.titlesize')
(118, 'figure.titleweight')
(119, 'font.cursive')
(120, 'font.family')
(121, 'font.fantasy')
(122, 'font.monospace')
(123, 'font.sans-serif')
(124, 'font.serif')
(125, 'font.size')
(126, 'font.stretch')
(127, 'font.style')
(128, 'font.variant')
(129, 'font.weight')
(130, 'grid.alpha')
(131, 'grid.color')
(132, 'grid.linestyle')
(133, 'grid.linewidth')
(134, 'hatch.color')
(135, 'hatch.linewidth')
(136, 'hist.bins')
(137, 'image.aspect')
(138, 'image.cmap')
(139, 'image.composite_image')
(140, 'image.interpolation')
(141, 'image.lut')
(142, 'image.origin')
(143, 'image.resample')
(144, 'interactive')
(145, 'keymap.all_axes')
(146, 'keymap.back')
(147, 'keymap.forward')
(148, 'keymap.fullscreen')
(149, 'keymap.grid')
(150, 'keymap.grid_minor')
(151, 'keymap.home')
(152, 'keymap.pan')
(153, 'keymap.quit')
(154, 'keymap.quit_all')
(155, 'keymap.save')
(156, 'keymap.xscale')
(157, 'keymap.yscale')
(158, 'keymap.zoom')
(159, 'legend.borderaxespad')
(160, 'legend.borderpad')
(161, 'legend.columnspacing')
(162, 'legend.edgecolor')
(163, 'legend.facecolor')
(164, 'legend.fancybox')
(165, 'legend.fontsize')
(166, 'legend.framealpha')
(167, 'legend.frameon')
(168, 'legend.handleheight')
(169, 'legend.handlelength')
(170, 'legend.handletextpad')
(171, 'legend.labelspacing')
(172, 'legend.loc')
(173, 'legend.markerscale')
(174, 'legend.numpoints')
(175, 'legend.scatterpoints')
(176, 'legend.shadow')
(177, 'lines.antialiased')
(178, 'lines.color')
(179, 'lines.dash_capstyle')
(180, 'lines.dash_joinstyle')
(181, 'lines.dashdot_pattern')
(182, 'lines.dashed_pattern')
(183, 'lines.dotted_pattern')
(184, 'lines.linestyle')
(185, 'lines.linewidth')
(186, 'lines.marker')
(187, 'lines.markeredgewidth')
(188, 'lines.markersize')
(189, 'lines.scale_dashes')
(190, 'lines.solid_capstyle')
(191, 'lines.solid_joinstyle')
(192, 'markers.fillstyle')
(193, 'mathtext.bf')
(194, 'mathtext.cal')
(195, 'mathtext.default')
(196, 'mathtext.fallback_to_cm')
(197, 'mathtext.fontset')
(198, 'mathtext.it')
(199, 'mathtext.rm')
(200, 'mathtext.sf')
(201, 'mathtext.tt')
(202, 'patch.antialiased')
(203, 'patch.edgecolor')
(204, 'patch.facecolor')
(205, 'patch.force_edgecolor')
(206, 'patch.linewidth')
(207, 'path.effects')
(208, 'path.simplify')
(209, 'path.simplify_threshold')
(210, 'path.sketch')
(211, 'path.snap')
(212, 'pdf.compression')
(213, 'pdf.fonttype')
(214, 'pdf.inheritcolor')
(215, 'pdf.use14corefonts')
(216, 'pgf.debug')
(217, 'pgf.preamble')
(218, 'pgf.rcfonts')
(219, 'pgf.texsystem')
(220, 'polaraxes.grid')
(221, 'ps.distiller.res')
(222, 'ps.fonttype')
(223, 'ps.papersize')
(224, 'ps.useafm')
(225, 'ps.usedistiller')
(226, 'savefig.bbox')
(227, 'savefig.directory')
(228, 'savefig.dpi')
(229, 'savefig.edgecolor')
(230, 'savefig.facecolor')
(231, 'savefig.format')
(232, 'savefig.frameon')
(233, 'savefig.jpeg_quality')
(234, 'savefig.orientation')
(235, 'savefig.pad_inches')
(236, 'savefig.transparent')
(237, 'scatter.marker')
(238, 'svg.fonttype')
(239, 'svg.hashsalt')
(240, 'svg.image_inline')
(241, 'text.antialiased')
(242, 'text.color')
(243, 'text.hinting')
(244, 'text.hinting_factor')
(245, 'text.latex.preamble')
(246, 'text.latex.preview')
(247, 'text.latex.unicode')
(248, 'text.usetex')
(249, 'timezone')
(250, 'tk.window_focus')
(251, 'toolbar')
(252, 'verbose.fileo')
(253, 'verbose.level')
(254, 'webagg.address')
(255, 'webagg.open_in_browser')
(256, 'webagg.port')
(257, 'webagg.port_retries')
(258, 'xtick.alignment')
(259, 'xtick.bottom')
(260, 'xtick.color')
(261, 'xtick.direction')
(262, 'xtick.labelbottom')
(263, 'xtick.labelsize')
(264, 'xtick.labeltop')
(265, 'xtick.major.bottom')
(266, 'xtick.major.pad')
(267, 'xtick.major.size')
(268, 'xtick.major.top')
(269, 'xtick.major.width')
(270, 'xtick.minor.bottom')
(271, 'xtick.minor.pad')
(272, 'xtick.minor.size')
(273, 'xtick.minor.top')
(274, 'xtick.minor.visible')
(275, 'xtick.minor.width')
(276, 'xtick.top')
(277, 'ytick.alignment')
(278, 'ytick.color')
(279, 'ytick.direction')
(280, 'ytick.labelleft')
(281, 'ytick.labelright')
(282, 'ytick.labelsize')
(283, 'ytick.left')
(284, 'ytick.major.left')
(285, 'ytick.major.pad')
(286, 'ytick.major.right')
(287, 'ytick.major.size')
(288, 'ytick.major.width')
(289, 'ytick.minor.left')
(290, 'ytick.minor.pad')
(291, 'ytick.minor.right')
(292, 'ytick.minor.size')
(293, 'ytick.minor.visible')
(294, 'ytick.minor.width')
(295, 'ytick.right')

则这些都是可以设置的属性。那么问题又来了,我怎么知道需不需要提前设置呢?那么需要查看plt.rcParams的各项设置默认属性,输入以下代码:

print(plt.rcParams)

运行代码:

_internal.classic_mode: False
agg.path.chunksize: 0
animation.avconv_args: []
animation.avconv_path: avconv
animation.bitrate: -1
animation.codec: h264
animation.convert_args: []
animation.convert_path: convert
animation.embed_limit: 20.0
animation.ffmpeg_args: []
animation.ffmpeg_path: ffmpeg
animation.frame_format: png
animation.html: none
animation.html_args: []
animation.writer: ffmpeg
axes.autolimit_mode: data
axes.axisbelow: line
axes.edgecolor: k
axes.facecolor: w
axes.formatter.limits: [-7, 7]
axes.formatter.min_exponent: 0
axes.formatter.offset_threshold: 4
axes.formatter.use_locale: False
axes.formatter.use_mathtext: False
axes.formatter.useoffset: True
axes.grid: False
axes.grid.axis: both
axes.grid.which: major
axes.hold: None
axes.labelcolor: k
axes.labelpad: 4.0
axes.labelsize: medium
axes.labelweight: normal
axes.linewidth: 0.8
axes.prop_cycle: cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])
axes.spines.bottom: True
axes.spines.left: True
axes.spines.right: True
axes.spines.top: True
axes.titlepad: 6.0
axes.titlesize: large
axes.titleweight: normal
axes.unicode_minus: True
axes.xmargin: 0.05
axes.ymargin: 0.05
axes3d.grid: True
backend: module://ipykernel.pylab.backend_inline
backend.qt4: None
backend.qt5: None
backend_fallback: True
boxplot.bootstrap: None
boxplot.boxprops.color: k
boxplot.boxprops.linestyle: -
boxplot.boxprops.linewidth: 1.0
boxplot.capprops.color: k
boxplot.capprops.linestyle: -
boxplot.capprops.linewidth: 1.0
boxplot.flierprops.color: k
boxplot.flierprops.linestyle: none
boxplot.flierprops.linewidth: 1.0
boxplot.flierprops.marker: o
boxplot.flierprops.markeredgecolor: k
boxplot.flierprops.markerfacecolor: none
boxplot.flierprops.markersize: 6.0
boxplot.meanline: False
boxplot.meanprops.color: C2
boxplot.meanprops.linestyle: --
boxplot.meanprops.linewidth: 1.0
boxplot.meanprops.marker: ^
boxplot.meanprops.markeredgecolor: C2
boxplot.meanprops.markerfacecolor: C2
boxplot.meanprops.markersize: 6.0
boxplot.medianprops.color: C1
boxplot.medianprops.linestyle: -
boxplot.medianprops.linewidth: 1.0
boxplot.notch: False
boxplot.patchartist: False
boxplot.showbox: True
boxplot.showcaps: True
boxplot.showfliers: True
boxplot.showmeans: False
boxplot.vertical: True
boxplot.whiskerprops.color: k
boxplot.whiskerprops.linestyle: -
boxplot.whiskerprops.linewidth: 1.0
boxplot.whiskers: 1.5
contour.corner_mask: True
contour.negative_linestyle: dashed
datapath: c:\programdata\anaconda3\envs\tensorflow\lib\site-packages\matplotlib\mpl-data
date.autoformatter.day: %Y-%m-%d
date.autoformatter.hour: %m-%d %H
date.autoformatter.microsecond: %M:%S.%f
date.autoformatter.minute: %d %H:%M
date.autoformatter.month: %Y-%m
date.autoformatter.second: %H:%M:%S
date.autoformatter.year: %Y
docstring.hardcopy: False
errorbar.capsize: 0.0
examples.directory: 
figure.autolayout: False
figure.constrained_layout.h_pad: 0.04167
figure.constrained_layout.hspace: 0.02
figure.constrained_layout.use: False
figure.constrained_layout.w_pad: 0.04167
figure.constrained_layout.wspace: 0.02
figure.dpi: 72.0
figure.edgecolor: (1, 1, 1, 0)
figure.facecolor: (1, 1, 1, 0)
figure.figsize: [6.0, 4.0]
figure.frameon: True
figure.max_open_warning: 20
figure.subplot.bottom: 0.125
figure.subplot.hspace: 0.2
figure.subplot.left: 0.125
figure.subplot.right: 0.9
figure.subplot.top: 0.88
figure.subplot.wspace: 0.2
figure.titlesize: large
figure.titleweight: normal
font.cursive: ['Apple Chancery', 'Textile', 'Zapf Chancery', 'Sand', 'Script MT', 'Felipa', 'cursive']
font.family: ['sans-serif']
font.fantasy: ['Comic Sans MS', 'Chicago', 'Charcoal', 'ImpactWestern', 'Humor Sans', 'xkcd', 'fantasy']
font.monospace: ['DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Computer Modern Typewriter', 'Andale Mono', 'Nimbus Mono L', 'Courier New', 'Courier', 'Fixed', 'Terminal', 'monospace']
font.sans-serif: ['DejaVu Sans', 'Bitstream Vera Sans', 'Computer Modern Sans Serif', 'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'sans-serif']
font.serif: ['DejaVu Serif', 'Bitstream Vera Serif', 'Computer Modern Roman', 'New Century Schoolbook', 'Century Schoolbook L', 'Utopia', 'ITC Bookman', 'Bookman', 'Nimbus Roman No9 L', 'Times New Roman', 'Times', 'Palatino', 'Charter', 'serif']
font.size: 10.0
font.stretch: normal
font.style: normal
font.variant: normal
font.weight: normal
grid.alpha: 1.0
grid.color: #b0b0b0
grid.linestyle: -
grid.linewidth: 0.8
hatch.color: k
hatch.linewidth: 1.0
hist.bins: 10
image.aspect: equal
image.cmap: viridis
image.composite_image: True
image.interpolation: nearest
image.lut: 256
image.origin: upper
image.resample: True
interactive: True
keymap.all_axes: ['a']
keymap.back: ['left', 'c', 'backspace']
keymap.forward: ['right', 'v']
keymap.fullscreen: ['f', 'ctrl+f']
keymap.grid: ['g']
keymap.grid_minor: ['G']
keymap.home: ['h', 'r', 'home']
keymap.pan: ['p']
keymap.quit: ['ctrl+w', 'cmd+w', 'q']
keymap.quit_all: ['W', 'cmd+W', 'Q']
keymap.save: ['s', 'ctrl+s']
keymap.xscale: ['k', 'L']
keymap.yscale: ['l']
keymap.zoom: ['o']
legend.borderaxespad: 0.5
legend.borderpad: 0.4
legend.columnspacing: 2.0
legend.edgecolor: 0.8
legend.facecolor: inherit
legend.fancybox: True
legend.fontsize: medium
legend.framealpha: 0.8
legend.frameon: True
legend.handleheight: 0.7
legend.handlelength: 2.0
legend.handletextpad: 0.8
legend.labelspacing: 0.5
legend.loc: best
legend.markerscale: 1.0
legend.numpoints: 1
legend.scatterpoints: 1
legend.shadow: False
lines.antialiased: True
lines.color: C0
lines.dash_capstyle: butt
lines.dash_joinstyle: round
lines.dashdot_pattern: [6.4, 1.6, 1.0, 1.6]
lines.dashed_pattern: [3.7, 1.6]
lines.dotted_pattern: [1.0, 1.65]
lines.linestyle: -
lines.linewidth: 1.5
lines.marker: None
lines.markeredgewidth: 1.0
lines.markersize: 6.0
lines.scale_dashes: True
lines.solid_capstyle: projecting
lines.solid_joinstyle: round
markers.fillstyle: full
mathtext.bf: sans:bold
mathtext.cal: cursive
mathtext.default: it
mathtext.fallback_to_cm: True
mathtext.fontset: dejavusans
mathtext.it: sans:italic
mathtext.rm: sans
mathtext.sf: sans
mathtext.tt: monospace
patch.antialiased: True
patch.edgecolor: k
patch.facecolor: C0
patch.force_edgecolor: False
patch.linewidth: 1.0
path.effects: []
path.simplify: True
path.simplify_threshold: 0.1111111111111111
path.sketch: None
path.snap: True
pdf.compression: 6
pdf.fonttype: 3
pdf.inheritcolor: False
pdf.use14corefonts: False
pgf.debug: False
pgf.preamble: []
pgf.rcfonts: True
pgf.texsystem: xelatex
polaraxes.grid: True
ps.distiller.res: 6000
ps.fonttype: 3
ps.papersize: letter
ps.useafm: False
ps.usedistiller: False
savefig.bbox: None
savefig.directory: ~
savefig.dpi: figure
savefig.edgecolor: w
savefig.facecolor: w
savefig.format: png
savefig.frameon: True
savefig.jpeg_quality: 95
savefig.orientation: portrait
savefig.pad_inches: 0.1
savefig.transparent: False
scatter.marker: o
svg.fonttype: path
svg.hashsalt: None
svg.image_inline: True
text.antialiased: True
text.color: k
text.hinting: auto
text.hinting_factor: 8
text.latex.preamble: []
text.latex.preview: False
text.latex.unicode: False
text.usetex: False
timezone: UTC
tk.window_focus: False
toolbar: toolbar2
verbose.fileo: sys.stdout
verbose.level: silent
webagg.address: 127.0.0.1
webagg.open_in_browser: True
webagg.port: 8988
webagg.port_retries: 50
xtick.alignment: center
xtick.bottom: True
xtick.color: k
xtick.direction: out
xtick.labelbottom: True
xtick.labelsize: medium
xtick.labeltop: False
xtick.major.bottom: True
xtick.major.pad: 3.5
xtick.major.size: 3.5
xtick.major.top: True
xtick.major.width: 0.8
xtick.minor.bottom: True
xtick.minor.pad: 3.4
xtick.minor.size: 2.0
xtick.minor.top: True
xtick.minor.visible: False
xtick.minor.width: 0.6
xtick.top: False
ytick.alignment: center_baseline
ytick.color: k
ytick.direction: out
ytick.labelleft: True
ytick.labelright: False
ytick.labelsize: medium
ytick.left: True
ytick.major.left: True
ytick.major.pad: 3.5
ytick.major.right: True
ytick.major.size: 3.5
ytick.major.width: 0.8
ytick.minor.left: True
ytick.minor.pad: 3.4
ytick.minor.right: True
ytick.minor.size: 2.0
ytick.minor.visible: False
ytick.minor.width: 0.6
ytick.right: False

这里可以看到,image.cmap: viridis,viridis为“翠绿色”,故会产生第三张图错误的输出。

没有更多推荐了,返回首页