如何将Mat图像转换为vector <point>

时间:2015-08-11 14:04:11

标签: c++ opencv

有没有办法将Mat图像转换为矢量?

这不起作用:

Mat input = imread("image.png");
vector<Point> points;

points = input;

2 个答案:

答案 0 :(得分:3)

您可以轻松地手动完成,直接使用mat的行/列索引创建点:

//Create a blank mat of size 3x3 and an empty point vector
cv::Mat img = cv::Mat::zeros(cv::Size(3, 3), CV_8UC3);
std::vector<cv::Point> points;

//Loop over each pixel and create a point
for (int x = 0; x < img.cols; x++)
    for (int y = 0; y < img.rows; y++)
        points.push_back(cv::Point(x, y));

//Print out results
for (cv::Point p : points)
    std::cout << p << "\n";

enter image description here

但我不明白为什么你需要这样做,你已经知道矩阵中的点,因为你可以访问它的大小。

答案 1 :(得分:0)

请解释您希望如何将图像转换为点数。载体中的每个点都有什么作用?

您可以通过迭代矩阵来填充矢量。

您可以通过构造函数将3x1,1x3或1x2,2x1 Mat数组分配给Point2f,Point3f结构。

此主题可能会有帮助, Conversion of 3x1 or 1x3 cv::Mat to cv::Point3d?