用点填充一条线,然后寻找与轮廓的交叉点
populating a line with points and then looking for intersection with contours
我有两个点我想与一条线连接(opencv2.4 visual C 2010)。
我正在寻找使用FindContours的线上的点和轮廓之间的交叉点。
我的问题是,我将如何填充该线上点的结构,以便检查与轮廓的任何交集????
如果您可以提供一种在线上提出点的方法。
谢谢
正确的方法是计算布雷森汉姆的线算法:
Bresenham Line算法是一种算法,该算法确定哪个 应绘制n维栅格中的点以形成A 将两个给定点之间的直线关闭。
OPENCV DRAWLINE功能可能使用此算法。另一种方法,如果速度不是问题:在掩码图像中绘制线路,然后在此掩码中的像素上循环(或者至少在您的行周围的ROI)上循环并收集点的坐标:
cv::Mat mask = cv::Mat::zeros(originalImage.size(), CV_8U);
cv::Point p1, p2;
std::vector<cv::Point> points;
cv::line(mask, p1, p2, CV_RGB(255,255,255), CV_AA);
for (int row = min(p1.y, p2.y); row < max(p1.y, p2.y); ++row)
for (int col = min(p1.x, p2.x); col < max(p1.x, p2.x); ++col)
if(mask.at<unsigned char>(row, col) != 0)
points.push_back(cv::Point(col, row));
相关文章:
- QT在错误的班级中寻找空位
- 正在寻找C++不可变的hashset/hashmap
- 寻找地理和伤害意味着超载
- 寻找一种更好的方法来表示无符号字符数组
- 我正在寻找一种优雅的方式来从元组向量创建tuple_element向量
- 寻找闰年的逻辑是如何运作的?
- C++:寻找"returning address of local variable..."的更正
- 在C++中寻找排列和组合
- 如何检查用户的输入是否有效以及我正在寻找的数字?
- 为表示一个或多个操作的C++函数的int参数寻找类型安全的替换
- 寻找解决这个动态编程问题的提示
- 寻找最小楼梯成本的动态规划问题的错误答案
- 具有多个继承共享一个资源的对象 - 寻找良好的设计模式
- Homebrew OS X OpenCV - 在另一台Mac上运行时寻找dylib
- 我只是在寻找模板,在我的书中找到了这段代码,这显示了隔离错误?
- 寻找C++中数组和cout交互的解决方案
- C++原理和练习练习-从输入值n中寻找素数
- 寻找更好的方法来编写这个程序 C++
- 使用libgdal从文件中获取地形的轮廓
- 用点填充一条线,然后寻找与轮廓的交叉点