OpenCV-Hough最强线

OpenCV-Hough最强线,opencv,hough-transform,Opencv,Hough Transform,OpenCV中的HoughLines或HoughLinesP函数是否像HoughCircles函数一样以累加器顺序返回行列表?我想知道线路的顺序。它还可以非常方便地获取线路的累加器值,以便使用智能自适应阈值代替固定阈值。排序或累加器值是否可用?HoughtTransform orders行是否按票数递减。你可以看到代码 但是,当函数返回时,投票计数将丢失-唯一的方法是修改OpenCV 好消息是这并不复杂——我自己做过一次。将输出从vector更改为vector并用投票计数填充最后一个参数需要几分

OpenCV中的HoughLines或HoughLinesP函数是否像HoughCircles函数一样以累加器顺序返回行列表?我想知道线路的顺序。它还可以非常方便地获取线路的累加器值,以便使用智能自适应阈值代替固定阈值。排序或累加器值是否可用?HoughtTransform orders行是否按票数递减。你可以看到代码

但是,当函数返回时,投票计数将丢失-唯一的方法是修改OpenCV

好消息是这并不复杂——我自己做过一次。将输出从
vector
更改为
vector
并用投票计数填充最后一个参数需要几分钟的时间

此外,您必须修改CvLinePolar以添加第三个参数-hough在
C
中实现,并且在
C++
中有一个包装器,因此您必须同时修改实现和包装器

要修改的主要代码在这里

 for( i = 0; i < linesMax; i++ )
 {
        CvLinePolar line;
        int idx = sort_buf[i];
        int n = cvFloor(idx*scale) - 1;
        int r = idx - (n+1)*(numrho+2) - 1;
        line.rho = (r - (numrho - 1)*0.5f) * rho;
        line.angle = n * theta;

        // add this line, and a field voteCount to CvLinePolar
        // DO NOT FORGET TO MODIFY THE C++ WRAPPER
        line.voteCount = accum[idx];          

        cvSeqPush( lines, &line );
 }
(i=0;i { cvline极线; int idx=sort_buf[i]; int n=CVF层(idx*刻度)-1; int r=idx-(n+1)*(numrho+2)-1; line.rho=(r-(numrho-1)*0.5f)*rho; line.angle=n*θ; //将此行和字段voteCount添加到CvLinePolar //不要忘记修改C++包装器 line.voteCount=acum[idx]; cvSeqPush(线路和线路); }
好的。我总是认为台词是按顺序排列的。到目前为止,这个假设与我的结果是一致的。。。不过,很高兴能确定。谢谢你让我明白这一点,并向我指出代码。我正在使用概率版本并仔细阅读代码,如果能将linesMax也带出来以加快速度,那就太好了。概率版本在同一个文件中,我想你已经找到了。行搜索中的不同方法意味着投票计数不像经典H中那样相关。只要一行具有所需的最小票数,它就会被推送到结果队列中。没有执行排序。您好,很抱歉修改了这个线程,但是您有没有办法在概率hough变换中获取累加器值?我不太确定该行的投票在累加器矩阵中的什么位置。