cv :: HoughLines на iOS терпит неудачу с 'Ошибка OpenCV: Утверждение не удалось' - PullRequest
2 голосов
/ 21 февраля 2012

Я нахожусь в процессе написания приложения для iOS (использующего ARC), которое выполняет обнаружение краев Канни и преобразование Хафа на изображении и возвращает y-позицию горизонтальной линии из определенной его части.Чтобы добиться этого, я использую библиотеку OpenCV.

Обнаружение края Canny было достаточно простым, но метод cv::HoughLines каждый раз терпел неудачу с неприятной ошибкой «Утверждение не удалось».Вот фрагмент кода того, что я пытаюсь сделать:

cv::cvtColor(myImage, inputImage, cv::COLOR_RGB2GRAY);

cv::Canny(inputImage, outputImage, 200, 600);

cv::Vec2f lines; // short for 'Vec<float, 2>'
cv::HoughLines(outputImage, lines, 1, CV_PI/180, 100);

Сначала я не был уверен в правильности Vec2f, поэтому я попытался также определить lines как cv::Mat... Но тогда cv::HoughLines вообще не возвращает никаких данных - по крайней мере, при проверке с помощью cv::countNonZero(lines)

Будучи довольно новым для iOS и Objective-C (и пришедшим из менее основанного на Cфон кодирования) любые исправления и советы будут с благодарностью!

1 Ответ

3 голосов
/ 22 февраля 2012

Документы довольно ясно об этом:

void HoughLines(Mat& image, vector<Vec2f>& lines, double rho, double theta, int threshold, double srn=0, double stn=0)

Тем не менее, вам нужно изменить тип параметра на std::vector<cv::Vec2f>:

std::vector<cv::Vec2f> lines;
cv::HoughLines(outputImage, lines, 1, CV_PI/180, 100);

Если у вас возникли проблемы, попробуйте поискать примеры, в которых используется эта функция, например FiducialDetector .

...