iphone - cvGetSize 给出错误参数错误

标签 iphone ios opencv image-processing

我正在尝试减少图像的眩光和光反射,然后继续进行更多图像处理。我在网上找到了一段代码,据说可以用于选择范围内的像素,但是当我插入到我的算法中时,它给了我一个错误。我已经验证我的图像数据不是 NULL,因此这不会导致问题。为什么我会遇到断言失败?

错误:

OpenCV Error: Bad argument (Array should be CvMat or IplImage) in cvGetSize, file /Users/user/slave/builds/ios_framework/src/opencv/modules/core/src/array.cpp, line 1238 libc++abi.dylib: terminate called throwing an exception.

代码:

cv::Mat eye1 = [self cvMatFromUIImage:eye];
cv::Mat eye2;

IplImage imgHSV = *cvCreateImage(cvGetSize(&eye1), 8, 3);    //Assertion fails here
IplImage imgThreshold = *cvCreateImage(cvGetSize(&imgHSV), 8, 1);
cvInRangeS(&imgHSV, cvScalar(0, 0, 90, 0), cvScalar(0, 0, 100, 0) , &imgThreshold);
cv::Mat eye3(&imgThreshold);

原始代码不包含 *& 符号,但 Xcode 建议我放置它们,但功能仍然不起作用。

最佳答案

您收到的错误是因为 eye1 既不是 CvMat* 也不是 IplImage*,其中 cvGetSize()期望,但是一个cv::Mat。您需要了解这三种是不同的类型。 cv::Mat 是 C++ API 的一部分,而 CvMatIplImage 属于 C API,已弃用。最好不要将两者混为一谈。

您似乎想使用 cv::inRange()函数,也许是这样的:

cv::inRange(eye1, cv::Scalar(0,0,90,0), cv::Scalar(0,0,100,0), eye2);

然后您就可以省去 IplImage 变量和相关的手动内存管理。

关于iphone - cvGetSize 给出错误参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16990279/

相关文章:

ios - 将所有文档目录同步到 iCloud

python - 获取不规则形状的中心

c++ - FlannBasedMatcher 匹配器构建

iphone - 应用内购买响应。产品为空

iphone - 如何在 Iphone native 应用程序中同步 Google 日历、雅虎日历和 Toodledo?

ios - 如何在 ios 的 webview 中查看 .dwg (AutoCAD) 文件

iphone - iOS-TBXML-获取所有<img>-标签

python - 使用 OpenCV 从轮廓中获取掩码

ios - 奇怪的 Xcode 自动完成

iphone - 释放一个对象但仍然可以使用它