我使用简单的OpenCV代码加载图像并将其转换为灰度。我有一个包含我已复制的图像的文件夹。它使用不同的文件名一遍又一遍地使用相同的帧,文件的内容完全相同。
我运行循环并尝试转换图像并运行1020帧并且每次都停在该特定帧上并出现错误:
每次都会弹出来。我不明白这一点,如果代码适用于第一个图像,理论上它应该适用于文件夹中的所有其他图像,因为它们只是具有不同文件名的相同文件。我正在运行OpenCV 3.0并且还收到特定错误:"错误:(-215)scn == 3 || scn == 4 in function ipp_cvtColor"
" 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显示视频就好了。
答案 0 :(得分:0)
问题不在于OpenCV代码,而在于使用C代码来迭代文件。我打开了太多文件,导致程序失败。这是通过程序终止时收到的错误代码确认的。