gpt4 book ai didi

c++ - 如何在 OpenCV 中找到最大矩形的坐标?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:16 25 4
gpt4 key购买 nike

我有以下代码:

    findContours( src, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE );

Mat drawing = Mat::zeros( src.size(), CV_8UC3 );

double largest_area = 0;

for( int i = 0; i < contours.size(); i++) { // get the largest contour
area = fabs( contourArea( contours[i] ) );
if( area >= largest_area ){
largest_area = area;
largest_contours.clear();
largest_contours.push_back( contours[i] );
}
}

if( largest_area >= 3000 ){ // draw the largest contour if exceeded minimum largest area
drawContours( drawing, largest_contours, -1, Scalar(0,0,255), 2 );
}

...产生以下输出图像:

enter image description here

我想得到四个点的坐标(绿色标记),可以吗?

最佳答案

你想在透视中找到矩形的角吗?

您可能想尝试几种解决方案:

  1. 使用HoughLines进行直线检测并找到它们的交点。
  2. 使用Generalized Hough Transform
  3. 使用Harris corner detector .但是你需要过滤掉多余的角点。

对于类似的任务,我使用了以下过程(在我的情况下效果很好):使用递增的 epsilon 参数为输入轮廓执行 cv::approxPolyDP,直到它返回 4 条或更少的多段线。如果它返回 4 条折线,您可能会得到 4 个角点,正是您所需要的。如果它返回的多段线少于 4 条,很可能是出了什么问题。

关于c++ - 如何在 OpenCV 中找到最大矩形的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30310437/

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