matplotlib是Python语言中最流行的工具之一,它是基于Python的开源项目,旨在为Python提供一个数学绘图库,我们可以用它来制作简单的图表,如折线图‘散点图。用来将数据可视化。
(1)Microsoft Visual Studio Community 2015
(2)Anaconda3-5.2.0-Python3.6.5-Windows-x86_64
(3)OpenCV4.1.2
在安装Anaconda的过程中,记得勾选将Anaconda添加到环境变量中,可以省掉很多麻烦。并安装好CMake软件,勾选添加到环境变量中。
下载地址:git clone https://github.com/lava/matplotlib-cpp.git
下载下来的是压缩包,解压后如下:
以记事本形式打开contrib目录下的WinBuild.cmd文件,修改文件中4至8行为自己的配置环境:
其中:14表示VS2015,Release表示以Release模式进行编译,PYTHONHOME为Anaconda的安装目录,跟前面添加至环境变量的目录一致。
cmd ---> cd C:\Intel\matplotlib-cpp-master\contrib ----> WinBuild.cmd
1)、在VS2015中建立名为test_matplotlib的Win32控制台项目,建立完成后将运行环境设置为:Release x64
然后,为项目添加包含目录、库目录、附加依赖项,详细步骤如下:
(a)VC++目录–>包含目录:D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include\opencv2;D:\Program Files\OpenCV\opencv4.1.2\opencv\build\include;C:\ProgramData\Anaconda3\include;C:\ProgramData\Anaconda3\Lib\site-packages\numpy\core\include;C:\Intel\matplotlib-cpp-master;
(b)VC++目录–>库目录:D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc14\lib;D:\Program Files\OpenCV\opencv4.1.2\opencv\build\x64\vc15\lib;C:\ProgramData\Anaconda3\libs;
(c)链接器–>输入–>附加依赖项:opencv_world412.lib;python36.lib;python3.lib;_tkinter.lib;
2)、在新建cpp文件中添加如下测试代码:
// matplotlib.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
#include
#include
#include "matplotlibcpp.h"
namespace plt = matplotlibcpp;
//绘制折线段
void draw_polyline();
//从数据绘制各种图表
void draw_picture();
//3D的数据可视化
void draw_3Dpicture();
//显示图像
void show_image();
int main()
{
//draw_polyline();
//draw_picture();
//draw_3Dpicture();
show_image();
return 0;
}
//#include "matplotlibcpp.h"
//namespace plt = matplotlibcpp;
//绘制折线段
void draw_polyline()
{
plt::title("My_test");
plt::plot({ 1,3,2,4 });
plt::show();
system("pause");
}
//显示图像
void show_image()
{
//通过 plt::imshow 支持黑白跟彩色图像显示,显示一张图像的代码如下:
cv::Mat src = cv::imread("timg1.jpg");
cv::cvtColor(src, src, cv::COLOR_BGR2RGB);
const uchar* buff = src.ptr(0);
int h = src.rows;
int w = src.cols;
int channels = src.channels();
plt::title("My Demo");
plt::imshow(buff, h, w, channels);
plt::show();
}
//从数据绘制各种图表
void draw_picture()
{
// Prepare data.
int n = 5000; // number of data points
std::vector x(n), y(n);
for (int i = 0; i> x, y, z;
for (double i = -5; i <= 5; i += 0.25)
{
std::vector x_row, y_row, z_row;
for (double j = -5; j <= 5; j += 0.25)
{
x_row.push_back(i);
y_row.push_back(j);
z_row.push_back(::std::sin(::std::hypot(i, j)));
}
x.push_back(x_row);
y.push_back(y_row);
z.push_back(z_row);
}
plt::plot_surface(x, y, z);
plt::show();
}
3)在Release下直接运行代码会报如下错误:This application failed to start because it could not find or load the QT platform plugin "windows" in " ".
不要慌,已经有提示:需要Qt组件支持。
(1)将C:\ProgramData\Anaconda3目录下的python3.dll、python36.dll;和C:\ProgramData\Anaconda3\pkgs\qt-5.9.5-vc14he4a7d60_0\Library\plugins目录下的platforms文件夹;以及C:\ProgramData\Anaconda3\pkgs\qt-5.9.5-vc14he4a7d60_0\Library\bin目录下的Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll复制到测试项目的Release目录下。
(2)重新生成解决方案,并执行。
调用 void show_image(),会显示图像如下:
调用 draw_polyline(),会显示图像如下:
调用 draw_picture(),会显示图像如下:
调用 draw_3Dpicture(),会显示图像如下:
参考文章:
1、Application failed to start because it could not find or load the QT platform plugin “windows" https://www.cnblogs.com/IUNI/p/7028042.html
2、五分钟学会C++高效图表绘制神器调用 https://cloud.tencent.com/developer/article/1588309