gpt4 book ai didi

opencv - 弯曲曲面

转载 作者:行者123 更新时间:2023-12-02 17:50:22 24 4
gpt4 key购买 nike

我有一个粘贴圆形标签的圆柱对象。我提取图像的轮廓。

我知道圆柱物体的半径以及标签。但是,并非每次获得的椭圆都是完全对称的。如何将椭圆展开成一个圆?

这是不对称的图像

编辑过
我试图扩展@Haris的解决方案,像这样

我不只是4个点,而是想使用一个点数组来获得更准确的圆。但是getPerspectiveTransform不允许我得分超过4分。有更好的方法吗?

最佳答案

因此,您想将对象转换为最小封闭圆,

如下图所示,将芦苇矩形转换为绿色圆圈。那就是将边界矩形转换成边界圆。

因此,请执行以下操作:

  • 图像阈值
  • Find contour and calculate bounding rect and minmum enclosing circle for contour.


  •  Mat src=imread("src.png");
    Mat thr;
    cvtColor(src,thr,CV_BGR2GRAY);
    threshold( thr, thr, 20, 255,CV_THRESH_BINARY_INV );
    bitwise_not(thr,thr);
    vector< vector <Point> > contours; // Vector for storing contour
    vector< Vec4i > hierarchy;

    Mat dst(src.rows,src.cols,CV_8UC1,Scalar::all(0)); //create destination image
    findContours( thr.clone(), contours, hierarchy,CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE ); // Find the contours in the image
    drawContours( dst,contours, 0, Scalar(255,255,255),CV_FILLED, 8, hierarchy );
    Rect R=boundingRect(contours[0]);
    Point2f center;
    float radius;
    minEnclosingCircle( (Mat)contours[0], center, radius);`

  • 应用warpPerspective

  • 在这里,您需要根据边界框和圆计算出转换矩阵
    std::vector<Point2f> src_pts;
    std::vector<Point2f> dst_pts;

    src_pts.push_back(Point(R.x,R.y));
    src_pts.push_back(Point(R.x+R.width,R.y));
    src_pts.push_back(Point(R.x,R.y+R.height));
    src_pts.push_back(Point(R.x+R.width,R.y+R.height));

    dst_pts.push_back(Point2f(center.x-radius,center.y-radius));
    dst_pts.push_back(Point2f(center.x+radius,center.y-radius));
    dst_pts.push_back(Point2f(center.x-radius,center.y+radius));
    dst_pts.push_back(Point2f(center.x+radius,center.y+radius));

    Mat transmtx = getPerspectiveTransform(src_pts,dst_pts);

    然后应用透视变换
    Mat transformed = Mat::zeros(src.rows, src.cols, CV_8UC3);
    warpPerspective(src, transformed, transmtx, src.size());
    imshow("transformed", transformed);

    关于opencv - 弯曲曲面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23240141/

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