gpt4 book ai didi

c++ - 如何使霍夫线变换执行得更快?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:54:36 25 4
gpt4 key购买 nike

我已经使用 hough 线变换编写了车道检测代码,在我的电脑中存储的视频文件中识别了线条 [具有 1280*720 分辨率],我的视频运行缓慢,我如何才能使运行速度更快? ,在我的代码中,我检查了由 canny、cvtcolor 和 hough 变换组成的函数 hough_transform 的执行时间,我正在检索帧,我可以每秒执行两帧,请帮助我减少执行时间。提前致谢这是代码:

#include <opencv2/highgui/highgui.hpp>
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int hough_tranform(Mat src){

if(src.empty())
{

cout << "can not open " << endl;
return -1;
}

Mat dst, cdst;
Canny(src, dst, 50, 200, 3);

cvtColor(dst, cdst, COLOR_GRAY2BGR);

vector<Vec4i> lines;
HoughLinesP(dst, lines, 1, CV_PI/180, 50, 50, 10 );

for( size_t i = 0; i < lines.size(); i++ )
{
Vec4i l = lines[i];
line( cdst, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,0,255), 3, 0);
}

imshow("detected lines", cdst);

}


int main() {

Mat frame;
string path = "C:/santhu/Wildlife.wmv";
VideoCapture capture(path);
namedWindow("my_window");

for(;;) {
capture >> frame;

hough_tranform(frame);

imshow("my_window", frame);

if(cv::waitKey(30) >= 0) break;
}
}

最佳答案

使用 HoughLinesP 函数的参数将帮助您以精度为代价提高性能。当图像大小增加时,此功能的性能将大大降低。

如果可能,使用 HoughLines 而不是概率方法,因为它更快。

使用双线性插值缩小图像不会影响输出质量,因为霍夫变换是对 canny 边缘检测器输出进行的。

我将遵循的步骤是:

  • 阅读一帧。
  • 转换为灰度。
  • 缩小灰度图像。
  • 如果可能,在灰度图像上选择 ROI 上的泳道检测到。
  • 对 ROI 图像精打细算。
  • 进行 hough 转换。

当你在做车道检测算法时,我会把我的两分钱放进去。Canny检测本身对包含树木阴影等的道路没有多大帮助,因为它周围会检测到边缘.虽然概率霍夫方法减少了上述情况下的误差,但(a)限制theta值,(b)使用sobel边缘检测,其中dx优先于dy是一些值得尝试的实验。

关于c++ - 如何使霍夫线变换执行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21898012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com