OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
G-API绘图和合成功能

用于图中绘制的函数。 更多...

主题

 绘制图元
 
 绘制操作和函数
 

详细描述

用于图中绘制的函数。

注意
这是一个正在进行中的功能,API 在未来的版本中可能会发生变化。

G-API 可以使用通用操作和一组 渲染图元 进行一些图中绘制。与传统的 OpenCV 不同,在 G-API 中,用户需要形成一个要绘制的图元渲染列表。此列表可以手动构建或在图表中生成。此列表被传递给 特殊操作或函数,其中所有图元都被解释并应用于图像。

例如,在一个复杂的流水线中,检测到的对象列表可以在图表中转换为 cv::gapi::wip::draw::Rect 图元的列表,以突出显示带有边界框的对象,或者检测到的人脸列表可以在图表中转换为 cv::gapi::wip::draw::Mosaic 图元的列表,以隐藏敏感内容或保护隐私。

与任何其他操作一样,G-API 中的渲染可以通过不同的后端重新实现。目前只有基于 OpenCV 的后端可用。

除了图表级操作之外,还有常规(即时)类似 OpenCV 的函数可用 – 请参阅 cv::gapi::wip::draw::render()。这些函数只是常规 G-API 的包装器,并动态构建渲染图,因此将编译参数作为参数。

目前,此 API 更偏向于机器,而不是以人为本。主要目的是将一组特定领域的对象转换为要绘制的图元列表。例如,为了生成如下所示的图片

需要按如下方式生成渲染列表

#include <opencv2/imgproc.hpp> // cv::FONT*, cv::LINE*, cv::FILLED
#include <opencv2/highgui.hpp> // imwrite
#include <opencv2/gapi.hpp>
int main(int argc, char *argv[])
{
if (argc < 2) {
std::cerr << "需要文件名" << std::endl;
return 1;
}
const auto font = cv::FONT_HERSHEY_DUPLEX;
const auto blue = cv::Scalar{ 255, 0, 0}; // B/G/R
const auto green = cv::Scalar{ 0, 255, 0};
const auto coral = cv::Scalar{0x81,0x81,0xF1};
const auto white = cv::Scalar{ 255, 255, 255};
cv::Mat test(cv::Size(480, 160), CV_8UC3, white);
namespace draw = cv::gapi::wip::draw;
std::vector<draw::Prim> prims;
prims.emplace_back(draw::Circle{ // CIRCLE 图元
{400,72}, // 位置 (一个 cv::Point)
32, // 半径
coral, // 颜色
cv::FILLED, // 厚度/填充类型
cv::LINE_8, // 线型
0 // 偏移
});
prims.emplace_back(draw::Text{ // TEXT 图元
"Hello from G-API!", // 文本
{64,96}, // 位置 (一个 cv::Point)
font, // 字体
1.0, // 缩放 (大小)
blue, // 颜色
2, // 厚度
cv::LINE_8, // 线型
false // 左下角原点标志
});
prims.emplace_back(draw::Rect{ // RECTANGLE 图元
{16,48,400,72}, // 几何图形 (一个 cv::Rect)
green, // 颜色
2, // 厚度
cv::LINE_8, // 线型
0 // 偏移
});
prims.emplace_back(draw::Mosaic{ // MOSAIC 图元
{320,96,128,32}, // 几何图形 (一个 cv::Rect)
16, // 单元格大小
0 // 抽取
});
draw::render(test, prims);
cv::imwrite(argv[1], test);
return 0;
}
n 维密集数组类
定义 mat.hpp:830
用于指定图像或矩形大小的模板类。
Definition types.hpp:335
CV_8UC3
#define CV_8UC3
CV_EXPORTS_W bool imwrite(const String &filename, InputArray img, const std::vector< int > &params=std::vector< int >())
将图像保存到指定文件。
@ FONT_HERSHEY_DUPLEX
正常大小的无衬线字体(比 FONT_HERSHEY_SIMPLEX 更复杂)
定义 imgproc.hpp:905
@ LINE_8
8 连接线
Definition imgproc.hpp:895
@ FILLED
定义 imgproc.hpp:893
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
定义 render.hpp:71