【发布时间】:2017-08-23 03:57:18
【问题描述】:
我尝试使用两个参考点绘制一条直线,但在垂直方向上遇到了一些问题。
这是当前的源代码:
cv::Mat img = cv::Mat::zeros(600,600,CV_8UC3);
cv::Point p1(306,41);
cv::Point p2(304,8);
cv::Point p(0,0), q(img.cols, img.rows);
if (p1.x != p2.x) {
double m = (double) (p1.y - p2.y) / (double) (p1.x - p2.x);
double b = p1.y - (m * p1.x);
p.y = m * p.x + b;
q.y = m * q.x + b;
} else {
p.x = q.x = p2.x;
p.y = 0;
q.y = img.rows;
}
cv::circle(img, p1, 4, cv::Scalar(255,0,255), -1);
cv::circle(img, p2, 4, cv::Scalar(255,0,255), -1);
cv::line(img, p, q, cv::Scalar(0,0,255), 2);
我做错了什么?
【问题讨论】:
-
我猜
cv::line(img, p1, p2, cv::Scalar(0,0,255), 2);不是你想要的,对吧? -
嗨@Miki,我想要一条完整的线穿过图像并使用 p1 和 p2 点作为参考。
-
在这种情况下,点p和q应该是线的最终点。
-
你的代码很适合我...请仔细检查
-
@Miki,我通过了错误的分数。请看以下几点:p1 = (301,49) 和 p2 = (303,460)。
标签: opencv image-processing line