objective-c - iOS 上的 cv::HoughLines 失败并显示 'OpenCV Error: Assertion failed'

标签 objective-c ios opencv edge-detection

我正在为 iOS 编写一个应用程序(使用 ARC),该应用程序对图像进行 Canny 边缘检测和霍夫变换,并从图像的特定部分返回水平线的 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 的编码背景),任何更正和提示将不胜感激!

最佳答案

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 .

关于objective-c - iOS 上的 cv::HoughLines 失败并显示 'OpenCV Error: Assertion failed',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9381380/

相关文章:

ios - 缺少 Retina 4 启动图像。如何忽略这个错误?

ios - 事件发生时更改特定 UITableViewCell 的 UIImage

ios - 委托(delegate)没有得到设置

ios - 将 Core Data 同步到 Dropbox 的最佳方式是什么?

iPhone iOS NSDate 如何检测日期范围是否包括月初?

iphone - 我在 NSString 中有公式......如何评估它

ios - Xcode 4.3 保存用户数据

Opencv Mat乘以常量运算保护溢出?

Python opencv 角落

c - OpenCV 中的仿射不变特征检测