索引地址:系列索引
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();
|
测试代码来自官方示例samples/plot/plot_demo.cpp:
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() { 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; }
|
测试效果:
代码不难理解,主要是这种方法在进行目标检测时常用。