OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
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-dimensional dense array class
Definition mat.hpp:840
Template class for specifying the size of an image or rectangle.
Definition types.hpp:335
#define CV_8UC3
Definition interface.h:90
bool imwrite(const String &filename, InputArray img, const std::vector< int > &params=std::vector< int >())
Saves an image to a specified file.
@ FONT_HERSHEY_DUPLEX
normal size sans-serif font (more complex than FONT_HERSHEY_SIMPLEX)
Definition imgproc.hpp:909
@ LINE_8
8-connected line
Definition imgproc.hpp:899
@ FILLED
Definition imgproc.hpp:897
int main(int argc, char *argv[])
Definition highgui_qt.cpp:3
Definition render.hpp:71