从行中提取坐标数组(C OpenCV)

使用C / OpenCV我使用cv :: line在图像上绘制了一条线,现在我正在尝试提取其坐标数组.我已经尝试将该行分配给cv :: Mat但是我得到一个错误,指出我无法从void转换为cv :: Mat.有没有一种简单的方法来获得这些坐标?

谢谢您的帮助!

解决方法:

你至少有几个选择.假设您知道该行的两个端点A和B:

1)在图像大小相同的零初始化蒙版上用线条(…)绘制线条,并使用findNonZero检索线条上的点(这将是蒙版上唯一的白点)(… ).

2)使用LineIterator检索点,无需绘制它们或创建蒙版.

您需要将您的点存储在矢量< Point>中.

#include <opencv2/opencv.hpp>
#include <vector>

using namespace std;
using namespace cv;

int main(int, char** argv)
{
    Mat3b image(100,100); // Image will contain your original rgb image

    // Line endpoints:
    Point A(10,20);
    Point B(50,80);


    // Method: 1) Create a mask
    Mat1b mask(image.size(), uchar(0));
    line(mask, A, B, Scalar(255));

    vector<Point> points1;
    findNonZero(mask, points1);

    // Method: 2) Use LineIterator
    LineIterator lit(image, A, B);

    vector<Point> points2;
    points2.reserve(lit.count);
    for (int i = 0; i < lit.count; ++i, ++lit)
    {
        points2.push_back(lit.pos());
    }

    // points1 and points2 contains the same points now!

    return 0;
}
上一篇:在Javascript中协调虚线字体


下一篇:如何检查某些区域内是否有Python坐标