有什么方法可以将 Mat 图像转换为矢量吗?
这不起作用:
Mat input = imread("image.png");
vector<Point> points;
points = input;
您可以轻松地手动完成,直接使用垫子的行/列索引创建点:
//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";
但我不明白为什么你需要这样做,你已经知道矩阵中的点,因为你可以访问它的大小。
请解释您希望如何将图像转换为点。向量中的每个点包含什么?
您可以通过迭代矩阵来填充向量。
您可以通过构造函数将 3x1,1x3 或 1x2,2x1 Mat 数组分配给 Point2f、Point3f 结构。
这个帖子可能会有所帮助, 将 3x1 或 1x3 cv::Mat 转换为 cv::Point3d?
这是一个简单的演示
` cv::Mat image;//假设这个 image.size() == cv::Size(N,4); std::向量点集((Vec4f*)image.data, (Vec4f*)image.data + image.cols);
`