OpenCV4入门系列教程55:使用plot2d绘制折线图

索引地址:OpenCV入门系列教程索引目录

上一篇:OpenCV4入门系列教程54:视频文字显示

OpenCV的基本库提供了一些基础图形和文字的绘制,在附属模块中提供了与python/matlab相似的plot绘制折线图的功能。

函数原型为:

1
2
static Ptr< Plot2d >    create (InputArray data);
static Ptr< Plot2d > create (InputArray dataX, InputArray dataY);

输入是Mat对象,可以是一个或者两个。

创建对象方法:

1
Ptr<Plot2d> plot = cv::plot::Plot2d::create();

测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <opencv2/highgui.hpp>
#include <opencv2/plot.hpp>

using namespace cv;

int main() {
//准备一行51列的数据位置
Mat data_x(1, 51, CV_64F);
Mat data_y(1, 51, CV_64F);

//填充模拟数据
for (int i = 0; i < data_x.cols; i++) {
double x = (i - data_x.cols / 2);
data_x.at<double>(0, i) = x;
data_y.at<double>(0, i) = x * x * x;
}

std::cout << "data_x : " << data_x << std::endl;
std::cout << "data_y : " << data_y << std::endl;

Mat plot_result;

//创建新对象
Ptr<plot::Plot2d> plot = plot::Plot2d::create(data_x, data_y);
plot->render(plot_result);

imshow("The plot rendered with default visualization options", plot_result);

//自定义参数
plot->setShowText(false);
plot->setShowGrid(false);
plot->setPlotBackgroundColor(Scalar(255, 200, 200));
plot->setPlotLineColor(Scalar(255, 0, 0));
plot->setPlotLineWidth(2);
plot->setInvertOrientation(true);
plot->render(plot_result);//根据参数进行渲染

imshow("The plot rendered with some of custom visualization options", plot_result);
waitKey();

return 0;
}

测试效果:

plot2d

代码不难理解,主要是这种方法在进行目标检测时常用。

下一篇:OpenCV4入门系列教程55.5:测试6绘图综合测试