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

时间:2015-09-23 21:09:01

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

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

我运行循环并尝试转换图像并运行1020帧并且每次都停在该特定帧上并出现错误:

  

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

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

  

" OpenCV错误:断言失败(scn == 3 || scn == 4)在ipp_cvtColor中,文件/ 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显示视频就好了。

1 个答案:

答案 0 :(得分:0)

问题不在于OpenCV代码,而在于使用C代码来迭代文件。我打开了太多文件,导致程序失败。这是通过程序终止时收到的错误代码确认的。