QtCharts详细介绍及其使用

news2024/11/30 2:26:41

QtCharts模块

QtCharts是Qt框架中的一个模块,用于创建各种图表和数据可视化。它提供了一组功能强大且易于使用的类,使开发人员能够轻松地在应用程序中添加各种交互式图表。

QtCharts模块支持多种常见类型的图表,包括折线图、柱状图、饼图、面积图和散点图等。开发人员可以使用这些图表来展示和分析数据,为用户提供更好的数据理解和决策。

QtCharts模块具有以下主要特点:

  1. 数据绑定:开发人员可以将数据与图表进行绑定,以便在数据发生变化时自动更新图表。这样可以实现实时的数据显示和动态变化的图表效果。

  2. 交互性:QtCharts模块支持用户与图表进行交互,比如缩放、平移、选择、悬停等操作。用户可以通过鼠标或触摸屏来与图表进行交互,以便更详细地查看数据或进行特定的操作。

  3. 主题和样式:QtCharts模块提供了丰富的主题和样式选项,开发人员可以根据应用程序的需要选择不同的外观和风格。这样可以使图表与应用程序的整体UI设计保持一致,提升用户体验。

  4. 导出和打印:QtCharts模块支持将图表导出为常见的图片格式,如PNG、JPEG等。开发人员可以将图表保存为文件,或者直接打印出来,以便与他人共享或进一步分析。

总之,QtCharts模块为开发人员提供了一个强大而灵活的工具,用于创建各种类型的图表和数据可视化。它可以帮助开发人员快速实现丰富的数据显示功能,并提供良好的用户交互性和样式定制能力。无论是在科学研究、数据分析、企业报告还是智能控制系统等领域,QtCharts都是一个可靠的选择。

封装的图表类型

QtCharts 可以绘制以下类型的图表:

  1. 折线图(Line Chart):用于显示数据的趋势和变化,通过连接数据点形成折线。

  2. 散点图(Scatter Chart):用于展示数据点的分布情况,每个数据点在坐标系中独立显示。

  3. 柱状图(Bar Chart):用于比较多个类别或数据组之间的数值差异,使用矩形柱子表示。

  4. 条形图(Horizontal Bar Chart):类似于柱状图,但是柱子是横向排列的。

  5. 饼图(Pie Chart):用于展示数据占比情况,通过扇形的大小表示不同数据的相对比例。

  6. 区域图(Area Chart):用于显示数据的累积变化情况,通过填充区域来表达数据的范围。

  7. 股票图(Stock Chart):用于展示股票市场的价格数据,包括开盘价、收盘价、最高价、最低价等。

  8. 散点线图(Spline Chart):类似于散点图,但是通过平滑的曲线连接数据点,更加强调数据的变化趋势。

  9. 曲线图(Spline Series Chart):用于平滑地显示数据的变化情况,通过插值算法计算平滑曲线。

  10. 雷达图(Radar Chart):用于展示多个数据维度之间的相对关系,通过多边形的面积来表示数据的相对大小。

这些图表类型提供了丰富的数据可视化方式,您可以根据不同的需求选择适合的图表类型来展示和分析数据。同时,QtCharts 还提供了丰富的配置选项,使您能够自定义每种类型图表的样式、布局和交互行为,以满足具体的绘图需求。

QtCharts相关类

QtCharts模块涉及以下一些主要类,它们各自具有不同的作用:

  1. QChart:表示一个图表,可以包含一个或多个图表系列。它提供了对图表的整体设置和管理,如标题、图例、坐标轴等。

  2. QChartView:是一个显示QChart的视图类,可以将图表以窗口、小部件或其他视图的形式显示在应用程序中。它还提供了一些交互功能,如缩放、平移和选择。

  3. QLineSeries:用于创建折线图的类。可以将数据点连接起来形成一条折线,用于显示数据的变化趋势。

  4. QBarSeries:用于创建柱状图的类。可以将数据以柱状的形式进行可视化展示,用于比较不同类别或组之间的数据。

  5. QPieSeries:用于创建饼图的类。可以根据数据点的比例绘制一个圆形图表,用于展示各个部分在整体中所占的比例。

  6. QAreaSeries:用于创建面积图的类。可以根据数据点的数值绘制一个填充区域,用于显示数据的累积或变化情况。

  7. QScatterSeries:用于创建散点图的类。可以在二维坐标系中显示数据点,用于观察数据的分布和相关性。

  8. QCategoryAxis:表示一个分类轴,用于在图表中显示离散的类别或标签。比如在柱状图中显示x轴的类别标签。

  9. QValueAxis:表示一个值轴,用于在图表中显示连续的数值范围。比如在折线图中显示y轴的数值范围。

这些类只是QtCharts模块中的一部分,每个类都有许多属性和方法,可以用于自定义图表的外观、样式和交互行为。通过组合使用这些类,开发人员可以根据需求创建各种类型的图表,并对其进行灵活的配置和扩展。

QChartView介绍

QChartView是QtCharts模块中的一个类,用于在Qt应用程序中显示图表。它扮演了图表与应用程序用户界面之间的桥梁,提供了图表的可视化和交互功能。

QChartView类可以将QChart对象以窗口、小部件或其他视图的方式展示在应用程序中。通过使用QChartView,开发人员可以方便地将图表嵌入到应用程序的布局中,并进行自定义设置和样式。

QChartView类提供了以下主要功能:

  1. 显示图表:QChartView可以直接显示一个QChart对象。通过将QChart对象分配给QChartView的chart属性,可以将图表显示在QChartView中。

  2. 交互功能:QChartView支持一些常见的交互操作,如缩放、平移和选择。用户可以使用鼠标或触摸屏来对图表进行交互操作,以便更详细地查看数据或执行特定操作。

  3. 布局管理:QChartView可以作为QWidget的子类,使其能够通过布局管理器灵活地放置在应用程序的用户界面中。这样,开发人员可以根据需要将图表放置在主窗口、对话框或其他小部件中。

  4. 样式定制:QChartView可以通过样式表来自定义其外观和样式。开发人员可以使用样式表来修改图表的颜色、线条样式、字体等属性,以便与应用程序的整体风格保持一致。

  5. 导出和打印:QChartView提供了导出图表为图片格式(如PNG、JPEG等)或打印图表的功能。这使得开发人员可以将图表保存为文件以备份或分享,或者直接打印图表以供报告或展示使用。

总之,QChartView类为开发人员提供了一个方便的工具,用于在Qt应用程序中显示和交互图表。它通过简化图表的集成和自定义过程,帮助开发人员快速创建并展示数据可视化,提供更好的用户体验和数据分析能力。

QChartView接口

QChartView类是QtCharts模块中用于显示图表的一个视图类。它提供了一组接口和方法,用于管理和控制图表的显示、交互和布局等方面。

以下是QChartView类的主要接口及其作用:

  1. 构造函数:QChartView可以使用不同的构造函数来创建对象。构造函数允许开发人员指定图表对象作为参数,以便将图表直接关联到QChartView。

  2. chart属性:chart()方法用于获取与QChartView相关联的QChart对象。开发人员可以通过设置setChart()方法将图表对象分配给QChartView,从而在视图中显示该图表。

  3. setBackgroundBrush()方法:该方法用于设置QChartView的背景刷子(brush),用于定义图表视图的背景色、渐变或纹理等样式。

  4. setRenderHint()方法:该方法用于设置图表渲染时的一些提示选项。开发人员可以通过设置这些选项来优化图表的渲染效果和性能,如抗锯齿、高质量渲染等。

  5. setRubberBand()方法:该方法用于启用或禁用橡皮筋选择功能。当启用橡皮筋选择后,用户可以使用鼠标或触摸屏在图表上进行框选,并选择感兴趣的数据区域。

  6. setViewportUpdateMode()方法:该方法用于设置视图的更新模式。开发人员可以根据需要选择完整更新或增量更新模式,以控制图表视图的刷新行为。

  7. setInteractive()方法:该方法用于启用或禁用图表的交互功能。当启用交互功能后,用户可以使用鼠标或触摸屏进行缩放、平移和选择等操作,以便更详细地查看数据或执行特定操作。

  8. setDragMode()方法:该方法用于设置图表的拖动模式。开发人员可以选择平移模式或橡皮筋选择模式,以控制鼠标拖动时图表的行为。

  9. setRenderHint()方法:该方法用于设置图表渲染时的一些提示选项。开发人员可以通过设置这些选项来优化图表的渲染效果和性能,如抗锯齿、高质量渲染等。

  10. grab()方法:该方法用于获取图表视图的截图。开发人员可以使用grab()方法将图表视图保存为图片文件或进行其他处理。

  11. update()方法:该方法用于手动触发图表视图的更新。通常情况下,QChartView会自动管理图表视图的更新,但在某些情况下,开发人员可能需要手动调用update()方法来强制刷新图表视图。

除了上述接口和方法之外,QChartView还继承了QWidget类的一些常用接口和方法,如resize()、show()、hide()等,用于控制图表视图的大小、可见性和布局等方面。

总之,QChartView类提供了一组接口和方法,用于管理和控制图表在应用程序中的显示、交互和布局。通过使用这些接口和方法,开发人员可以方便地将图表嵌入到应用程序的用户界面中,并进行自定义设置和样式,以实现丰富的数据可视化效果。

QChart介绍

QChart类是Qt Charts模块中的核心类,用于定义和管理图表的属性、数据系列和轴等元素。它提供了一组接口和方法,使开发人员可以方便地创建、操作和定制各种类型的图表。

以下是QChart类的主要特点和功能:

  1. 添加和管理数据系列:QChart类允许开发人员通过addSeries()方法将一个或多个数据系列添加到图表中。数据系列表示图表中的数据集合,可以是线形图、柱状图、扇形图等不同类型的图表。通过使用QAbstractSeries派生类(如QLineSeries、QBarSeries等)实例化并添加到图表,可以在图表中显示相应的数据。

  2. 设置图表属性:QChart类提供了多个设置图表属性的方法,例如setTitle()、setTheme()、setAnimationOptions()等。开发人员可以使用这些方法来设置图表的标题、主题、动画和其他样式属性,以满足用户的需求和偏好。

  3. 管理图表轴:QChart类支持添加和管理图表的轴。通过addAxis()方法,开发人员可以向图表添加横轴和纵轴,并使用QAbstractAxis的派生类(如QCategoryAxis、QValueAxis等)来定制轴的属性和刻度值。轴提供了在图表中准确显示和解释数据的重要功能。

  4. 布局和位置控制:QChart类允许开发人员通过setPlotArea()方法设置图表的绘图区域。绘图区域是图表中显示数据的区域,开发人员可以自定义其大小和位置。此外,QChart还提供了坐标系转换功能,使开发人员可以在不同的坐标系之间进行转换和映射。

  5. 交互和操作支持:QChart类提供了一些方法和信号来支持图表的交互和操作。例如,setAcceptHoverEvents()方法可以启用或禁用鼠标悬停事件,setAnimationOptions()方法可以设置动画选项,而clicked()和hovered()信号可以捕获用户点击和悬停图表上的数据点时触发的事件。

  6. 图表导出和打印:QChart类提供了一些方法和功能,用于将图表导出为图片、PDF或SVG格式,并支持打印和复制到剪贴板等操作。这些功能使开发人员可以方便地将图表以多种方式共享和使用。

总之,QChart类是Qt Charts模块中重要的图表管理类,提供了丰富的功能和接口,用于创建、定制和操作各种类型的图表。通过使用QChart类,开发人员可以轻松地实现数据的可视化和交互,为应用程序提供更具吸引力和可用性的用户界面。

QChart接口

QChart类是Qt Charts模块中用于定义、管理和操作图表的主要类。下面是QChart类的一些常用接口及其作用:

  1. addSeries(series): 将数据系列series添加到图表中。通过这个接口,可以在图表上显示线性图、柱状图、扇形图等不同类型的数据。

  2. removeSeries(series): 从图表中移除数据系列series。使用这个接口可以动态地添加或删除数据系列,更新图表的显示。

  3. removeAllSeries(): 移除所有的数据系列。可以使用此接口一次性移除图表上的所有数据系列。

  4. setTitle(title): 设置图表的标题。可以使用这个接口为图表添加一个描述性的标题,以提供更好的可视化效果和信息传达。

  5. setTheme(theme): 设置图表的主题。通过这个接口,可以选择不同的主题样式,比如浅色、深色或其他自定义样式,来改变图表的外观。

  6. addAxis(axis, alignment): 添加轴到图表上。通过这个接口,可以添加横轴(x轴)和纵轴(y轴)到图表中,并指定它们的对齐方式(alignment),如左侧对齐、右侧对齐等。

  7. axisX()和axisY(): 获取图表中的横轴和纵轴对象。可以使用这些接口获取对轴对象的引用,以便进一步定制轴的属性和设置。

  8. setPlotArea(rectangle): 设置图表的绘图区域。使用这个接口可以定义图表绘图区域的位置和大小,以控制图表中数据的显示范围。

  9. setBackgroundVisible(visible): 设置图表的背景可见性。通过这个接口,可以启用或禁用图表的背景显示,以适应应用程序的需求。

  10. setAnimationOptions(options): 设置图表的动画选项。可以使用这个接口定义图表的动画效果,在图表更新或切换数据时提供更流畅的过渡。

  11. legend(): 获取图表的图例对象。可以使用这个接口获取对图例对象的引用,进行图例的设置和操作,比如位置、显示项等。

  12. zoomIn(rectangle): 在指定的矩形区域内进行缩放。使用这个接口可以实现对特定区域的放大显示。

  13. zoomOut(): 恢复图表的缩放级别。使用这个接口可以还原图表到原始的缩放级别。

  14. save(filename, format): 将图表保存为文件。可以使用这个接口将图表保存为图片、PDF或SVG格式的文件,以便于导出和共享。

  15. createDefaultAxes(): 创建默认的横轴和纵轴。使用这个接口可以自动创建横轴和纵轴对象,并添加到图表中,方便快速构建基本的图表。

以上是QChart类的一些常用接口及其作用。通过使用这些接口,可以方便地创建、管理和定制图表,实现丰富多样的数据可视化效果,并提供交互和操作支持,以满足不同应用程序的需求。

绘制折线图代码

#include <QtWidgets/QApplication>
#include <QtCharts/QChart>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QMainWindow>
#include <QTime>
#include <QDebug>

using namespace QtCharts;

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建 QLineSeries 对象
    QLineSeries *lineSeries = new QLineSeries();

    // 添加折线数据
    qsrand(QTime::currentTime().second());
    for(int i = 0; i <= 20; i++) {
        qreal x = i;
        qreal y = qrand()%100;
        lineSeries->append(x, y);
        qDebug()<<QPoint(x,y);
    }

    // 创建 QChart 对象
    QChart *chart = new QChart();
    chart->setTitle("Line Chart"); // 设置标题
    chart->addSeries(lineSeries); // 将折线系列添加到图表中

    // 创建 QValueAxis 对象作为 X 轴
    QValueAxis *axisX = new QValueAxis();
    axisX->setLabelFormat("%.0f"); // 设置标签格式
    axisX->setTitleText("X Axis");
    axisX->setRange(0, 20); // 设置范围
    axisX->setTickCount(21); // 设置 tickCount,即标签数量为 21
    chart->addAxis(axisX, Qt::AlignBottom); // 将 X 轴添加到图表中
    lineSeries->attachAxis(axisX); // 折线系列关联 X 轴

    // 创建 QValueAxis 对象作为 Y 轴
    QValueAxis *axisY = new QValueAxis();
    axisY->setTitleText("Y Axis");
    axisY->setRange(0, 100); // 设置范围
    axisY->setTickCount(11); // 设置 tickCount,即标签数量为 11
    chart->addAxis(axisY, Qt::AlignLeft); // 将 Y 轴添加到图表中
    lineSeries->attachAxis(axisY); // 折线系列关联 Y 轴

    // 创建 QChartView 对象显示图表
    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing); // 抗锯齿

    // 显示窗口
    QMainWindow window;
    window.setCentralWidget(chartView);
    window.resize(800, 600);
    window.show();

    return app.exec();
}

运行结果:

散点图绘制代码

#include <QtWidgets/QApplication>
#include <QtCharts/QChart>
#include <QtCharts/QChartView>
#include <QtCharts/QScatterSeries>
#include <QtCharts/QValueAxis>
#include <QMainWindow>
#include <QDebug>
#include <QTime>

using namespace QtCharts;

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建 QScatterSeries 对象
    QScatterSeries *scatterSeries = new QScatterSeries();

    // 添加散点数据
    qsrand(QTime::currentTime().second());//设置随机数生成器的种子
    for(int i = 0; i <= 20; i++) {
        qreal x = i;
        qreal y = qrand()%100;
        scatterSeries->append(x, y);
        qDebug()<<QPoint(x,y);//测试输出
    }

    // 创建 QChart 对象
    QChart *chart = new QChart();
    chart->setTitle("Scatter Chart"); // 设置标题
    chart->addSeries(scatterSeries); // 将散点系列添加到图表中

    // 创建 QValueAxis 对象作为 X 轴
    QValueAxis *axisX = new QValueAxis();
    axisX->setLabelFormat("%.0f"); // 设置标签格式
    axisX->setTitleText("X Axis");
    axisX->setRange(0, 20); // 设置范围
    axisX->setTickCount(21); // 设置 tickCount,即标签数量为 21
    chart->addAxis(axisX, Qt::AlignBottom); // 将 X 轴添加到图表中
    scatterSeries->attachAxis(axisX); // 散点系列关联 X 轴

    // 创建 QValueAxis 对象作为 Y 轴
    QValueAxis *axisY = new QValueAxis();
    axisY->setTitleText("Y Axis");
    axisY->setRange(0, 100); // 设置范围
    axisY->setTickCount(11); // 设置 tickCount,即标签数量为 11
    chart->addAxis(axisY, Qt::AlignLeft); // 将 Y 轴添加到图表中
    scatterSeries->attachAxis(axisY); // 散点系列关联 Y 轴

    // 创建 QChartView 对象显示图表
    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing); // 抗锯齿

    // 显示窗口
    QMainWindow window;
    window.setCentralWidget(chartView);
    window.resize(800, 600);
    window.show();

    return app.exec();
}

运行结果

柱状图绘制代码

#include <QApplication>
#include <QtCharts/QChart>
#include <QtCharts/QChartView>
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QValueAxis>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建 QBarSeries 对象
    QtCharts::QBarSeries *series = new QtCharts::QBarSeries();

    // 创建 QBarSet 对象并设置数据
    QtCharts::QBarSet *set = new QtCharts::QBarSet("Data");
    *set << 10 << 30 << 20 << 40 << 60 << 70 << 80 << 50 << 90 << 100
         << 30 << 50 << 70 << 20 << 40 << 60 << 80 << 90 << 10 << 30 <<80;

    // 将 QBarSet 对象添加到 QBarSeries 中
    series->append(set);

    // 创建 QChart 对象
    QtCharts::QChart *chart = new QtCharts::QChart();
    chart->addSeries(series); // 将 QBarSeries 添加到 QChart 中
    chart->setTitle("Bar Chart"); // 设置标题

    // 创建 QValueAxis 对象作为 X 轴
    QtCharts::QValueAxis *axisX = new QtCharts::QValueAxis();
    axisX->setLabelFormat("%.0f"); // 设置标签格式
    axisX->setTitleText("X Axis");
    axisX->setRange(0, 20); // 设置范围
    axisX->setTickCount(21); // 设置 tickCount,即标签数量为 21
    chart->addAxis(axisX, Qt::AlignBottom); // 将 X 轴添加到图表中
    series->attachAxis(axisX); // QBarSeries 关联 X 轴

    // 创建 QValueAxis 对象作为 Y 轴
    QtCharts::QValueAxis *axisY = new QtCharts::QValueAxis();
    axisY->setTitleText("Y Axis");
    axisY->setRange(0, 100); // 设置范围
    axisY->setTickCount(11); // 设置 tickCount,即标签数量为 11
    chart->addAxis(axisY, Qt::AlignLeft); // 将 Y 轴添加到图表中
    series->attachAxis(axisY); // QBarSeries 关联 Y 轴

    // 创建 QChartView 对象显示图表
    QtCharts::QChartView *chartView = new QtCharts::QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing); // 抗锯齿
    chartView->show();

    return app.exec();
}

运行结果:

饼图绘制

#include <QApplication>
#include <QtCharts/QChart>
#include <QtCharts/QChartView>
#include <QtCharts/QPieSeries>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建 QPieSeries 对象
    QtCharts::QPieSeries *series = new QtCharts::QPieSeries();

    // 添加数据序列
    series->append("Data 1", 10);
    series->append("Data 2", 30);
    series->append("Data 3", 20);
    series->append("Data 4", 40);
    series->append("Data 5", 50);

    // 创建 QChart 对象
    QtCharts::QChart *chart = new QtCharts::QChart();
    chart->addSeries(series); // 将 QPieSeries 添加到 QChart 中
    chart->setTitle("Pie Chart"); // 设置标题

    // 创建 QChartView 对象显示图表
    QtCharts::QChartView *chartView = new QtCharts::QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing); // 抗锯齿
    chartView->show();

    return app.exec();
}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈C++|STL之set篇

一.set 1.1set基本概念 特点&#xff1a; 所有元素在插入时&#xff0c;会自动排序&#xff0c;并且不能插入重复元素。 本质&#xff1a; set/multiset属于关联式容器&#xff0c;底层是红黑树。 set/multiset区别 1.set不允许容器中有重复的元素 2.multiset允许容器中有重复…

FFmpeg入门及编译

文章目录 前言一、FFmpeg 简介二、基本组成1、封装模块 - AVFormat2、编解码模块 - AVCodec3、滤镜模块 - AVFilter4、视频图像转换计算模块 - swscale5、音频转换计算模块 - swresample6、AVUtil - 核心工具库7、AVDevice - 硬件采集&#xff0c;加速&#xff0c;显示 三、命令…

教学必备工具

大家好&#xff0c;今天要给大家介绍一个超级方便的工具——易查分&#xff01;利用易查分&#xff0c;我们可以轻松制作一个便捷高效的作业查询系统&#xff0c;让作业查询变得简单又高效。下面就让我来为大家详细介绍一下易查分的使用教程吧&#xff01; 是不是想有个自己的分…

【Java】-【使用jxl操作excel】

文章目录 下载jxl包并引用基本使用多sheet页使用并与MySQL/Oracle数据库连接 报错excel文件读写报错&#xff1a;jxl.read.biff.BiffException: Unable to recognize OLE stream原因&#xff1a;文件版本不兼容&#xff0c;jxl只支持excecl03版解决办法 下载jxl包并引用 jxl.j…

【1++的C++进阶】之C++11(二)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C进阶】 文章目录 一&#xff0c;类的新变化二&#xff0c;可变参数模板三&#xff0c;lambda表达式 一&#xff0c;类的新变化 在C03之前&#xff0c;我们的默认成员函数有6个&#xff0c;…

(2596. 检查骑士巡视方案leetcode,经典深搜)-------------------Java实现

&#xff08;2596. 检查骑士巡视方案leetcode,经典深搜&#xff09;-------------------Java实现 题目表述 骑士在一张 n x n 的棋盘上巡视。在 有效 的巡视方案中&#xff0c;骑士会从棋盘的 左上角 出发&#xff0c;并且访问棋盘上的每个格子 恰好一次 。 给你一个 n x n …

PY32F003F18之定时器中断

PY32F003F18定时器有TIM1&#xff0c;TIM3&#xff0c;TIM14&#xff0c;TIM16和TIM17。其中TIM1为高级定时器&#xff0c;其它为通用定时器。见下表&#xff1a; 一、PY32F003F18定时器的工作模式&#xff1a; 1、边沿对齐模式 计数器工作在"边沿对齐模式" 设置&q…

《动手学深度学习 Pytorch版》 4.7 前向传播、反向传播和计算图

4.7.1 前向传播 整节理论&#xff0c;详见书本。 4.7.2 前向传播计算图 整节理论&#xff0c;详见书本。 4.7.3 反向传播 整节理论&#xff0c;详见书本。 4.7.4 训练神经网络 整节理论&#xff0c;详见书本。 练习 &#xff08;1&#xff09;假设一些标量函数 X X X…

Wireshark把DDoS照原形

1 前言 MTU、 传输速度、 拥塞控制&#xff0c;还是各种重传&#xff0c;TCP传输相关的核心概念&#xff1a; 学习了RFC规范和具体的Linux实现通过案例&#xff0c;把这些知识灵活运用了起来 这种种还是在协议规范这大框架内的讨论&#xff0c;默认前提就是通信两端是遵照TC…

Activating More Pixels in Image Super-Resolution Transformer(HAT)超分

摘要 基于Transformer的方法在低级视觉任务&#xff08;如图像超分辨率&#xff09;上表现出令人印象深刻的性能。然而&#xff0c;我们发现这些网络只能通过归因分析利用有限的输入信息空间范围。这意味着Transformer的潜力在现有网络中仍未得到充分利用。为了激活更多输入像…

yolov7添加 iRMB模块

复制过来 yolo.py添加 yaml文件随便换&#xff0c;建议换3x3的 pip install timm0.6.5&#xff0c;版本问题记得搞一下

DNG格式详解,DNG是什么?为何DNG可以取代RAW统一单反相机、苹果安卓移动端相机拍摄输出原始图像数据标准

返回图像处理总目录&#xff1a;《JavaCV图像处理合集总目录》 前言 在DNG格式发布之前&#xff0c;我们先了解一下之前单反相机、苹果和安卓移动端相机拍照输出未经处理的原始图像格式是什么&#xff1f; RAW 什么是RAW&#xff1f; RAW是未经处理、也未经压缩的格式。可以…

基于开源模型搭建实时人脸识别系统(六):人脸识别(人脸特征提取)

文章目录 人脸识别的几个发展阶段基于深度学习的人脸识别技术的流程闭集和开集&#xff08;Open set&#xff09;识别人脸识别的损失Insightface人脸识别数据集模型选型参考文献结语人脸识别系统项目源码 前面我们讲过了人脸检测、人脸质量、人脸关键点、人脸跟踪&#xff0c;接…

微分中值定理

目录 费马定理 罗尔定理 拉格朗日中值定理 柯西中值定理 几个常用的泰勒公式 微分中值定理是微积分中的一个重要定理&#xff0c;它用于描述一个函数在某个区间内的平均变化率与该区间内某一点的瞬时变化率之间的关系。微分中值定理有两个主要形式&#xff1a;拉格朗日中值…

Kotlin Files Paths write ByteArray writeString写多行BufferedWriter

Kotlin Files Paths write ByteArray writeString写多行BufferedWriter import java.nio.file.Files import java.nio.file.Paths import java.nio.file.StandardOpenOptionfun main(args: Array<String>) {val filePath "./myfile.txt"val path Paths.get(…

【报错】springboot3启动报错

报错内容&#xff1a;Cannot load driver class: org.h2.Driver Error starting ApplicationContext. To display the condition evaluation report re-run your application with debug enabled. 解决; 通过源码分析&#xff0c;druid-spring-boot-3-starter目前最新版本是1…

微信小程序 写一个接口不会掉就不会停止的加载动画

我们可以在接口调用前执行 wx.showLoading({title: 加载中,mask: true })这个加载会在这一直转 显示这加载的动画 它不会自己停下来 而是需要你执行 wx.hideLoading()之后 这个加载动画才会停止 那么我们完全可以将wx.hideLoading()放在接口返回的回调中 这样 就达到了一个 …

LeetCode每日一题:2596. 检查骑士巡视方案(2023.9.13 C++)

目录 2596. 检查骑士巡视方案 题目描述&#xff1a; 实现代码与解析&#xff1a; bfs模拟 原理思路&#xff1a; 2596. 检查骑士巡视方案 题目描述&#xff1a; 骑士在一张 n x n 的棋盘上巡视。在有效的巡视方案中&#xff0c;骑士会从棋盘的 左上角 出发&#xff0c;并…

利用Semaphore实现多线程调用接口A且限制接口A的每秒QPS为10

前段时间在群里面发现有个群友抛出一个实际需求&#xff1a;需要通过一个接口拉取数据&#xff0c;这个接口有每秒10QPS限制&#xff0c;请问如何实现数据拉去效率最大化且限制调用拉取接口每秒10PQPS&#xff1f;我觉得这个需求挺有意思的&#xff0c;跟某群友讨论&#xff0c…

CopyOnWriteArrayList源码分析

其中唯一的线程安全 List 实现就是 CopyOnWriteArrayList。 特点 由于读取操作不会对原有数据进行修改&#xff0c;因此&#xff0c;对于每次读取都进行加锁其实是一种资源浪费。相比之下&#xff0c;我们应该允许多个线程同时访问 List 的内部数据&#xff0c;毕竟对于读取操…