从行中提取坐标数组(C ++ OpenCV)

时间:2015-08-04 02:01:04

标签: c++ arrays opencv line coordinates

使用C ++ / OpenCV我使用cv::line在图像上绘制了一条线,现在我正在尝试提取其坐标数组。我已尝试将该行分配给cv::Mat,但我收到一条错误消息,指出我无法从void转换为cv::Mat。有没有一种简单的方法来获得这些坐标?

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

你至少有几个选择。假设您知道该行的两个端点AB

1)在与图像大小相同的零初始化蒙版上绘制带有line(...)的线,并使用{{1检索线上的点(这将是蒙版上的唯一白点) }}

2)使用findNonZero(...)检索点,无需绘制它们或创建蒙版。

您需要将积分存储在LineIterator

vector<Point>

答案 1 :(得分:3)

你可以看到这个答案。我认为这是你的问题所需要的,Finding points in a line

Opencv具有Line Iterator功能。浏览文档!

以下是一个示例用法!

LineIterator it(img, pt1, pt2, 8);
for(int i = 0; i < it.count; i++, ++it)
{
    Point pt= it.pos(); 
   //Draw Some stuff using that Point pt
}