是否可以将cv :: Point存储到cv :: Mat?

时间:2013-05-19 10:23:13

标签: c++ opencv

我想将Points存储到opencv矩阵(cv :: Mat),是否可能? 我已尝试使用此代码:

cv::Mat_<cv::Point> matPoint;
matPoint.at<cv::Point>(0) = cv::Point(2,2);
std::cout << matPoint.at<cv::Point>(0) << std::endl;

实际上,它已成功编译,但是当我运行代码时,我得到了一个“浮点异常”。 我知道上面的代码是错误的,但我不知道其他方法。

任何帮助将不胜感激。 谢谢

2 个答案:

答案 0 :(得分:2)

执行此操作的正确方法是:

// Create 1x1 matrix and initialize all elements with (0,0)
cv::Mat_<cv::Point> matPoint(1, 1, cv::Point(0, 0));

// Access the element with index 0
matPoint(0) = cv::Point(2, 2);

// Alternative syntax for targeting the elements by their two-dimensional index:
std::cout << matPoint(0, 0) << std::endl;

.at<cv::Point>(0)语法也应该有效,但不太方便。

答案 1 :(得分:2)

另一个版本:

cv::Mat_<cv::Point> matPoint;
matPoint.push_back(Point(2,2));