使用C ++ / OpenCV我使用cv::line
在图像上绘制了一条线,现在我正在尝试提取其坐标数组。我已尝试将该行分配给cv::Mat
,但我收到一条错误消息,指出我无法从void转换为cv::Mat
。有没有一种简单的方法来获得这些坐标?
感谢您的帮助!
答案 0 :(得分:4)
你至少有几个选择。假设您知道该行的两个端点A
和B
:
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
}