OpenCV  4.10.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 << "Filename required" << 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 primitive
{400,72}, // Position (a cv::Point)
32, // Radius
coral, // Color
cv::FILLED, // Thickness/fill type
cv::LINE_8, // Line type
0 // Shift
});
prims.emplace_back(draw::Text{ // TEXT primitive
"Hello from G-API!", // Text
{64,96}, // Position (a cv::Point)
font, // Font
1.0, // Scale (size)
blue, // Color
2, // Thickness
cv::LINE_8, // Line type
false // Bottom left origin flag
});
prims.emplace_back(draw::Rect{ // RECTANGLE primitive
{16,48,400,72}, // Geometry (a cv::Rect)
green, // Color
2, // Thickness
cv::LINE_8, // Line type
0 // Shift
});
prims.emplace_back(draw::Mosaic{ // MOSAIC primitive
{320,96,128,32}, // Geometry (a cv::Rect)
16, // Cell size
0 // Decimation
});
draw::render(test, prims);
cv::imwrite(argv[1], test);
return 0;
}
N 维稠密数组类
定义 mat.hpp:812
用于指定图片或矩形的尺寸的模板类。
定义 types.hpp:335
#define CV_8UC3
定义 interface.h:90
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:903
@ LINE_8
8 连接线
定义 imgproc.hpp:893
@ FILLED
定义 imgproc.hpp:891
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
定义 render.hpp:71