Выполняют ли функции HoughLines или HoughLinesP в OpenCV список строк в порядке хранения, например, функция HoughCircles? Я хотел бы знать порядок строк. Также было бы очень удобно получить значение аккумулятора для линий, поэтому вместо фиксированного можно использовать интеллектуальный и адаптивный порог. Доступны ли параметры заказа или аккумулятора без самостоятельно переписывать OpenCV?
OpenCV Hough сильнейшие линии
Ответ 1
HoughTransform упорядочивает строки, опускающиеся по количеству голосов. Вы можете увидеть код здесь
Однако подсчет голосов теряется по мере возврата функции - единственный способ изменить OpenCV.
Хорошая новость заключается в том, что это не очень сложно - я сделал это сам один раз. Это показатель минут, чтобы изменить вывод с vector< Vec2f >
на 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 );
}