为啥我会收到此 OpenCV 错误断言失败?

Posted

技术标签:

【中文标题】为啥我会收到此 OpenCV 错误断言失败?【英文标题】:Why am i getting this OpenCV error Assertion Failed?为什么我会收到此 OpenCV 错误断言失败? 【发布时间】:2013-04-17 19:23:17 【问题描述】:

代码如下:

Mat _orange = imread("orange.jpg");
Mat_<Vec3f> orange;
_orange.convertTo(orange, orange.type(), 1.0/255.0);

_orange.convertTo(orange, orange.type(), 1.0/255.0); 部分导致错误。

这是错误信息:

OpenCV 错误:未知函数中的断言失败 (!fixedType() || ((Mat*)obj)->type() == mtype)。

PS: 我正在使用 Visual Studio 2012 和 OpenCV 2.4.4

【问题讨论】:

_orange.channels() 返回什么? 它为 _orange.channels() 返回 3。 【参考方案1】:

尝试像这样向您的 imread 添加参数:

cv::imread("orange.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR );

【讨论】:

我做了和你一样的事情,我可以在我的项目中做到这一点。我使用 2.4.5 和 VS2010 的区别。但这不应该是一个问题。所以也许看看你的包含和库。【参考方案2】:

我的猜测是cv::Mat::convertTo() 方法正在调用cv::Mat::create() 方法为变量orange 中的数据分配内存。您应该尝试将 orange.type() 替换为 CV_32F 以使其正常工作。

【讨论】:

这是我最初的方法,不幸的是它给出了同样的错误。

以上是关于为啥我会收到此 OpenCV 错误断言失败?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 错误:断言失败,mat.cpp 第 537 行

为啥我会收到此错误:模块构建失败(来自 ./node_modules/babel-loader/lib/index.js):语法错误 Unexpected token, expected "

OPENCV / C++: approxpolydp 断言失败错误

为啥我会收到此错误? PLS-00103:在预期以下情况之一时遇到符号“CREATE”:

OpenCV 错误:互相关中的断言失败

cv::CascadeClassifier::detectMultiScale 中的断言失败 (!empty())