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