OpenCV 3.0-错误:函数ipp_cvtColor中的(-215)scn==3||scn==4

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

本文关键字:scn -215 中的 cvtColor 错误 函数 ipp OpenCV      更新时间:2023-10-16

我有一个简单的OpenCV代码,用于加载图像并将其转换为灰度。我有一个文件夹,里面有我复制的图像。它只是同一帧,一次又一次地使用不同的文件名,文件的内容完全相同。

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

"错误:函数ipp_cvtColor中的(-215(scn=3||scn=4">

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

"OpenCV错误:ipp_cvtColor中的断言失败(scn==3||scn==4(,文件/home/bah/OpenCV3.0/OpenCV/modules/imgproc/src/color.cpp,第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代码。我打开的文件太多,导致程序失败。我在程序终止时收到的errno代码证实了这一点。