The following is an example code.
Mat img = cv::imread(argv[1]);
auto yolo = vitis::ai::YOLOv3::create("yolov3_voc", true);
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";
rectangle(img, Point(xmin, ymin), Point(xmax, ymax), Scalar(0, 255, 0), 1, 1, 0);
}
imshow("", img);
waitKey(0);
To create the YOLOv3 object, use create
.
static std::unique_ptr<YOLOv3> create(const std::string& model_name, bool need_mean_scale_process = true);
Note: The model_name
is the same as the prototxt. For more details about the example, see ~/Vitis-AI/Vitis-AI-Library/yolov3/test/test_yolov3.cpp.