如何将Mat图像转换为矢量<Point>

问题描述 投票:0回答:3

有什么方法可以将 Mat 图像转换为矢量吗?

这不起作用:

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

points = input;
c++ opencv
3个回答
2
投票

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

//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

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


0
投票

请解释您希望如何将图像转换为点。向量中的每个点包含什么?

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

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

这个帖子可能会有所帮助, 将 3x1 或 1x3 cv::Mat 转换为 cv::Point3d?


0
投票

这是一个简单的演示

` cv::Mat image;//假设这个 image.size() == cv::Size(N,4); std::向量点集((Vec4f*)image.data, (Vec4f*)image.data + image.cols);

`

© www.soinside.com 2019 - 2024. All rights reserved.