c++ - OpenCV 3.0 - 错误 : (-215) scn == 3 || scn == 4 in function ipp_cvtColor

标签 c++ opencv file-io opencv3.0

我有简单的 OpenCV 代码,用于加载图像并将其转换为灰度。我有一个包含已复制图像的文件夹。就是一遍又一遍的同一个帧,不同的文件名,文件的内容完全一样。

我运行一个循环并尝试转换图像,它运行了 1020 帧,每次都在该特定帧停止并出现错误:

"error: (-215) scn == 3 || scn == 4 in function ipp_cvtColor"

每次都会出现。我不明白这一点,如果代码适用于第一张图像,理论上它应该适用于文件夹中的所有其他图像,因为它们是相同的文件,只是文件名不同。我正在运行 OpenCV 3.0 并且还收到以下特定错误:

"OpenCV Error: Assertion failed (scn == 3 || scn == 4) in ipp_cvtColor,file/home/blah/OpenCV3.0/opencv/modules/imgproc/src/color.cpp, line 7453"

当程序停止时。

我的代码是:

char * baseImagePath; //these are updated as the program iterates
char * nextImagePath; //they contain the full path of the image

Mat baseImage, nextImage;
Mat grayImage1,grayImage2;

baseImage = imread(baseImagePath, CV_LOAD_IMAGE_COLOR);

if(baseImage.empty()){

    printf("%s EMPTY!\n", baseImagePath);

}

cvtColor(baseImage, grayImage1, COLOR_BGR2GRAY);

nextImage = imread(nextImagePath, CV_LOAD_IMAGE_COLOR);

if(nextImage.empty()){

    printf("%s EMPTY!\n", nextImagePath);

}

cvtColor(nextImage, grayImage2, COLOR_BGR2GRAY);

所以,这很奇怪。当我运行我的代码时,我确认我的程序认为特定帧的图像是空的,但是当我运行时:

display frame.jpg

如果 frame.jpg 是我的程序声称为空的框架,则 imageMagick 可以很好地显示视频。

最佳答案

问题不在于 OpenCV 代码,而在于我用来遍历文件的 C 代码。我打开了太多文件,导致程序失败。我在程序终止时收到的错误代码证实了这一点。

关于c++ - OpenCV 3.0 - 错误 : (-215) scn == 3 || scn == 4 in function ipp_cvtColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32749516/

相关文章:

Opencv匹配轮廓图像

python - 如何关闭轮廓而不是边缘 - OpenCV

c++ - 使用 boost::filesystem 时如何正确处理错误?

c# - C#处理文件错误

go - 使用 Go 编程语言输出到纯文本文件?

c++ - 使用bool函数在c++中进行递归二进制搜索

c++ - 将一个应用程序嵌入到Qt应用程序中时,如何获取mouseMoveEvent和嵌入窗口大小

c++ - 在 C++ 中嵌套在模板中的类中使用基类的成员时出错

php - 调用未定义函数 dl() php

c++ - boost 或 Visual Studio 2010 中的内存泄漏