我有简单的 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/