Hourglass
モデル。入力サイズは 256x256 です。人物の姿勢を検出するためのベース クラス。
入力はイメージ (cv:Mat) です。
出力は
HourglassResult
です。
サンプル コード:
auto image = cv::imread(argv[2]);
if (image.empty()) {
std::cerr << "cannot load " << argv[2] << std::endl;
abort();
}
auto det = vitis::ai::Hourglass::create
(argv[1]);
vector<vector<int>> limbSeq = {{0, 1}, {1, 2}, {2, 6}, {3, 6}, {3, 4}, {4, 5},
{6, 7}, {7, 8}, {8, 9}, {7, 12},
{12, 11}, {11, 10}, {7, 13}, {13, 14}, {14, 15}};
auto results = det->run(image.clone());
for (size_t i = 0; i < results.poses.size(); ++i) {
cout<< results.poses[i].point<<endl;
if (results.poses[i].type == 1) {
cv::circle(image, results.poses[i].point, 5, cv::Scalar(0, 255, 0),
-1);
}
}
for (size_t i = 0; i < limbSeq.size(); ++i) {
Result a = results.poses[limbSeq[i][0]];
Result b = results.poses[limbSeq[i][1]];
if (a.type == 1 && b.type == 1) {
cv::line(image, a.point, b.point, cv::Scalar(255, 0, 0), 3, 4);
}
}
hourglass モデルの結果を次に示します。
図 1. hourglass の結果イメージ
関数クイック リファレンス
次の表に、vitis::ai::Hourglass
クラスに定義されているすべての関数を示します。
タイプ | メンバー | 引数 |
---|---|---|
std::unique_ptr<
Hourglass
> |
create |
|
HourglassResult
|
run |
|
std::vector<
HourglassResult
> |
run |
|
int | getInputWidth |
|
int | getInputHeight |
|
size_t | get_input_batch |
|