イメージ (cv::Mat) から lanedetect を検出するためのベース クラス。
入力はイメージ (cv::Mat) です。
出力は車線のタイプと点が示された車線です。
サンプル コード:
注記: 入力イメージのサイズは 640x480 です。
auto det = vitis::ai::RoadLine::create
("vpgnet_pruned_0_99");
auto image = cv::imread("sample_lanedetect.jpg");
// Mat image;
// resize(img, image, Size(640, 480));
if (image.empty()) {
cerr << "cannot load " << argv[1] << endl;
abort();
}
vector<int> color1 = {0, 255, 0, 0, 100, 255};
vector<int> color2 = {0, 0, 255, 0, 100, 255};
vector<int> color3 = {0, 0, 0, 255, 100, 255};
RoadLineResult results = det->run(image);
for (auto &line : results.lines) {
vector<Point> points_poly = line.points_cluster;
// for (auto &p : points_poly) {
// std::cout << p.x << " " << (int)p.y << std::endl;
//}
int type = line.type < 5 ? line.type : 5;
if (type == 2 && points_poly[0].x < image.rows * 0.5)
continue;
cv::polylines(image, points_poly, false,
Scalar(color1[type], color2[type], color3[type]), 3,
cv::LINE_AA, 0);
}
モデルの結果を次に示します。
図 1. 結果イメージ
関数クイック リファレンス
次の表に、vitis::ai::RoadLine
クラスに定義されているすべての関数を示します。
タイプ | メンバー | 引数 |
---|---|---|
std::unique_ptr<
RoadLine
> |
create |
|
int | getInputWidth |
|
int | getInputHeight |
|
size_t | get_input_batch |
|
RoadLineResult
|
run |
|
std::vector<
RoadLineResult
> |
run |
|