gpt4 book ai didi

opencv - 绘制梯形 ROI OpenCV C++

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:51 24 4
gpt4 key购买 nike

我正在使用 C++ 中的 OpenCV 解决车道检测问题。为了选择 ROI,我打算使用梯形蒙版来过滤该区域。但是,我无法弄清楚如何绘制梯形。选择四个顶点后,differently shaped polygon正在绘制。这是我的代码。

void select_roi(Mat &frame){
int rows = frame.rows;
int cols = frame.cols;

Point points[1][4];
points[0][0] = Point(cols*0.05, rows);
points[0][1] = Point(cols*0.4, rows*0.4);
points[0][2] = Point(cols*0.95, rows);
points[0][3] = Point(cols*0.6, rows*0.4);

Mat img = empty_image(frame); //User defined function that returns empty image of frame dimensions
const Point* ppt[1] = {points[0]};
int npt[] = {4};
fillPoly(img, ppt, npt, 1, Scalar(255,0,0), 8);
imshow("Poly",img);
}

最佳答案

非常简单的错误:您的积分顺序不正确。目前你正在绘制左下角,然后是左上角,然后是右下角,然后是右上角,然后连接回第一个。想象一下,如果您按顺序使用这些坐标追踪它——您会得到与错误的相同的形状。因此,您需要做的就是对它们进行排序,这样如果您从每个点到下一个点画线,就可以创建形状。

points[0][0] = Point(cols*0.05, rows);
points[0][1] = Point(cols*0.4, rows*0.4);
points[0][2] = Point(cols*0.6, rows*0.4);
points[0][3] = Point(cols*0.95, rows);

关于opencv - 绘制梯形 ROI OpenCV C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47648247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com