OpenCV 中的 HoughLines 或 HoughLinesP 函数是否像 HoughCircles 函数一样以累加器顺序返回行列表?我想知道行的顺序。获取线的累加器值也非常方便,因此可以使用智能和自适应阈值而不是固定阈值。是否可以在不自己重写 OpenCV的情况下使用排序值或累加器值?
问问题
6464 次
1 回答
15
HoughTransform 按票数降序排列行。你可以在这里看到代码
但是,当函数返回时,投票计数会丢失 - 获得它的唯一方法是修改 OpenCV。
好消息是这不是很复杂——我自己做过一次。将输出从vector< Vec2f >
to更改为vector< Vec3f >
并用投票计数填充最后一个参数只需几分钟。
此外,您必须修改 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 );
}
于 2012-07-06T12:04:21.437 回答