グラフ内描画のための関数。続き...
グラフ内描画のための関数。
- 覚え書き
- これは作業中の機能であり、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は人間向けというよりは機械向けである。主な目的は、ドメイン固有のオブジェクトの集合を、描画するプリミティブのリストへ変換することである。例えば、次のような画像を生成するには:
描画リストを次のように生成する必要がある:
int main(
int argc,
char *argv[])
{
if (argc < 2) {
std::cerr << "Filename required" << std::endl;
return 1;
}
std::vector<draw::Prim> prims;
prims.emplace_back(draw::Circle{
{400,72},
32,
coral,
0
});
prims.emplace_back(draw::Text{
"Hello from G-API!",
{64,96},
font,
1.0,
blue,
2,
false
});
prims.emplace_back(draw::Rect{
{16,48,400,72},
green,
2,
0
});
prims.emplace_back(draw::Mosaic{
{320,96,128,32},
16,
0
});
draw::render(test, prims);
return 0;
}
Comma-separated Matrix Initializer.
Definition mat.hpp:964
Template class for specifying the size of an image or rectangle.
Definition types.hpp:338
#define CV_8UC3
Definition interface.h:79
bool imwrite(const String &filename, InputArray img, const std::vector< int > ¶ms=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:888
@ LINE_8
8-connected line
Definition imgproc.hpp:878
@ FILLED
Definition imgproc.hpp:876
int main(int argc, char *argv[])
Definition highgui_qt.cpp:3