模型推理移至管道末尾降舵机延迟60→16ms + 视觉Mat复用 + 端到端延迟计时 + OpenCV 4.13 + WASD遥控
This commit is contained in:
+10
-2
@@ -30,6 +30,9 @@ cv::Mat track;
|
||||
std::vector<int> left_line;
|
||||
std::vector<int> right_line;
|
||||
std::vector<int> mid_line;
|
||||
std::vector<int> mid_line_raw;
|
||||
|
||||
int g_lost_rows = 0;
|
||||
|
||||
int line_tracking_width; // 处理宽度 = 80
|
||||
int line_tracking_height; // 处理高度 = 60
|
||||
@@ -105,7 +108,8 @@ cv::Mat find_road(cv::Mat &frame)
|
||||
cv::morphologyEx(binarizedFrame, morphologyExFrame, cv::MORPH_OPEN, kernel);
|
||||
|
||||
static cv::Mat mask;
|
||||
mask = cv::Mat::zeros(line_tracking_height + 2, line_tracking_width + 2, CV_8UC1);
|
||||
if (mask.empty()) mask.create(line_tracking_height + 2, line_tracking_width + 2, CV_8UC1);
|
||||
mask.setTo(0);
|
||||
|
||||
// 3. 种子点位置
|
||||
// X = 图像水平中心 (line_tracking_width/2)
|
||||
@@ -130,7 +134,8 @@ cv::Mat find_road(cv::Mat &frame)
|
||||
nullptr, loDiff, upDiff, 8);
|
||||
|
||||
static cv::Mat outputImage;
|
||||
outputImage = cv::Mat::zeros(line_tracking_height, line_tracking_width, CV_8UC1);
|
||||
if (outputImage.empty()) outputImage.create(line_tracking_height, line_tracking_width, CV_8UC1);
|
||||
outputImage.setTo(0);
|
||||
mask(cv::Rect(1, 1, line_tracking_width, line_tracking_height)).copyTo(outputImage);
|
||||
|
||||
return outputImage;
|
||||
@@ -244,11 +249,13 @@ void image_main()
|
||||
|
||||
// ── 6. 中线计算 + 丢线补全 ─────
|
||||
// 从倒数第二行开始向上,底行(row=height-1)单独兜底避免 mid_line[row+1] 越界
|
||||
g_lost_rows = 0;
|
||||
for (int row = line_tracking_height - 2; row >= 10; --row)
|
||||
{
|
||||
// ── 6a. 丢线补全 ──────────────────────────────
|
||||
if (left_line[row] == -1 && right_line[row] == -1)
|
||||
{
|
||||
g_lost_rows++;
|
||||
// 当前行完全丢线: 用下行(row+1)的中线来虚拟补线
|
||||
mid_line[row] = mid_line[row + 1];
|
||||
|
||||
@@ -278,6 +285,7 @@ void image_main()
|
||||
const int row = line_tracking_height - 1;
|
||||
if (left_line[row] == -1 && right_line[row] == -1)
|
||||
{
|
||||
g_lost_rows++;
|
||||
mid_line[row] = line_tracking_width / 2;
|
||||
left_line[row] = 0;
|
||||
right_line[row] = line_tracking_width - 1;
|
||||
|
||||
Reference in New Issue
Block a user