可以将0.0改为0,或者将distances.begin()改为distances.begin().operator float(),两种方法都可以解决该错误。修改后的代码如下:

Mat image = imread("scale.jpg", 0); Mat edges; Canny(image, edges, 50, 150, 3); vector lines; HoughLines(edges, lines, 1, CV_PI / 180, 50, 0, 0); vector distances; for (size_t i = 0; i < lines.size(); i++) { float rho = lines[i][0], theta = lines[i][1]; if (theta < CV_PI / 4 || theta > 3 * CV_PI / 4) { Point pt1(rho / cos(theta), 0); Point pt2((rho - edges.rows * sin(theta)) / cos(theta), edges.rows); line(image, pt1, pt2, Scalar(0, 0, 255), 1); } else { Point pt1(0, rho / sin(theta)); Point pt2(edges.cols, (rho - edges.cols * cos(theta)) / sin(theta)); line(image, pt1, pt2, Scalar(0, 0, 255), 1); } if (i > 0) { float dist = abs(lines[i][0] - lines[i - 1][0]); distances.push_back(dist); } } float avg_dist = accumulate(distances.begin(), distances.end(), 0) / static_cast(distances.size()); cout << "Average distance between adjacent lines: " << avg_dist << endl; imshow("Detected lines", image); waitKey(0);

一张图像上有一把刻度尺尺子上有50个竖直的刻度线如何通过opencv用c++语言将这些直线检测出来并求出相邻两个直线之间像素距离的平均值刚刚输出的结果中float avg_dist = accumulatedistancesbegin distancesend 00 distancessize;这行被提示有错误请修改

原文地址: https://www.cveoy.top/t/topic/bSp6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录