入力イメージ (cv::Mat) 内の物体を検出するためのベース クラス。
入力はイメージ (cv::Mat) です。
出力は入力イメージ内の歩行者の位置です。
サンプル コード:
auto yolo =
vitis::ai::YOLOv3::create
("yolov3_adas_pruned_0_9", true);
Mat img = cv::imread("sample_yolov3.jpg");
auto results = yolo->run(img);
for(auto &box : results.bboxes){
int label = box.label;
float xmin = box.x * img.cols + 1;
float ymin = box.y * img.rows + 1;
float xmax = xmin + box.width * img.cols;
float ymax = ymin + box.height * img.rows;
if(xmin < 0.) xmin = 1.;
if(ymin < 0.) ymin = 1.;
if(xmax > img.cols) xmax = img.cols;
if(ymax > img.rows) ymax = img.rows;
float confidence = box.score;
cout << "RESULT: " << label << "\t" << xmin << "\t" << ymin << "\t"
<< xmax << "\t" << ymax << "\t" << confidence << "\n";
if (label == 0) {
rectangle(img, Point(xmin, ymin), Point(xmax, ymax), Scalar(0, 255, 0),
1, 1, 0);
} else if (label == 1) {
rectangle(img, Point(xmin, ymin), Point(xmax, ymax), Scalar(255, 0, 0),
1, 1, 0);
} else if (label == 2) {
rectangle(img, Point(xmin, ymin), Point(xmax, ymax), Scalar(0, 0, 255),
1, 1, 0);
} else if (label == 3) {
rectangle(img, Point(xmin, ymin), Point(xmax, ymax),
Scalar(0, 255, 255), 1, 1, 0);
}
}
imwrite("sample_yolov3_result.jpg", img);
モデルの結果を次に示します。
図 1. 出力イメージ
![out image](https://docs.amd.com/api/khub/maps/BDkUhV918ogoIAOYazdRZg/resources/pAMI8Cpon~51mCrbvq9mOQ-BDkUhV918ogoIAOYazdRZg/content?v=bff06b7f656ceb23)
関数クイック リファレンス
次の表に、vitis::ai::YOLOv3
クラスに定義されているすべての関数を示します。
タイプ | メンバー | 引数 |
---|---|---|
std::unique_ptr<
YOLOv3
> |
create |
|
YOLOv3Result
|
run |
|
std::vector<
YOLOv3Result
> |
run |
|
std::vector<
YOLOv3Result
> |
run |
|