cv::iOS 上的 HoughLines 失败,'OpenCV Error: Assertion failed'



我正在为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的编码背景),任何更正和提示都将不胜感激!

文档对此非常清楚:

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。

最新更新