有没有办法将Mat图像转换为矢量?
这不起作用:
Mat input = imread("image.png");
vector<Point> points;
points = input;
答案 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";
但我不明白为什么你需要这样做,你已经知道矩阵中的点,因为你可以访问它的大小。
答案 1 :(得分:0)
请解释您希望如何将图像转换为点数。载体中的每个点都有什么作用?
您可以通过迭代矩阵来填充矢量。
您可以通过构造函数将3x1,1x3或1x2,2x1 Mat数组分配给Point2f,Point3f结构。