iOS上的cv :: HoughLines失败,出现'OpenCV错误:断言失败'

时间:2012-02-21 16:37:42

标签: objective-c ios opencv edge-detection

我正在为iOS编写应用程序(使用ARC),对图像执行Canny边缘检测和Hough变换,并从其特定部分返回水平线的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 个答案:

答案 0 :(得分:3)

The docs对此非常清楚:

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