2015-09-23 3 views
1

У меня есть простой код OpenCV, который я использую для загрузки изображения и преобразования его в оттенки серого. У меня есть папка с изображениями, которые я реплицировал. Это один и тот же фрейм снова и снова с разными именами файлов, содержимое файлов точно такое же.OpenCV 3.0 - ошибка: (-215) scn == 3 || scn == 4 в функции ipp_cvtColor

Я бег петли и попытаться преобразовать изображения и работает на 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 отображает видео просто отлично.

+0

Похоже, что какой-то файл в папке не является допустимым или оно уже является серым изображением. Попробуйте проверить все файлы и убедиться, что все они являются цветными изображениями (RGB или RGBA). – redobot

+0

Что вы подразумеваете под действующим изображением? Изображения, которые я использую, - это только одно изображение, повторяющееся снова и снова. Это просто одно и то же содержимое файла с другим именем файла. Изображение, которое я использую, определенно является цветным изображением. –

+0

Я имею в виду, поскольку вы копируете изображение (и, я думаю, вы используете какой-то цикл, чтобы пройти через все). Возможно, цикл (или что-то еще, что вы используете) читает неожиданный файл, который не является допустимым изображением. Вы говорите, что он останавливается на определенном кадре, этот кадр равен другим или имеет какую-то разницу? вы можете попытаться использовать команды, такие как файл, идентифицировать, чтобы видеть wither, если этот файл является допустимым изображением, и если он имеет тот же md5sum, что и другие (просто чтобы убедиться, что это копия исходного изображения). – redobot

ответ

0

Проблема была не с кодом OpenCV, а с кодом C, который я использовал для итерации по файлам. У меня было слишком много файлов, и это вызвало провал программы. Это было подтверждено кодом errno, который я получил после завершения программы.

Смежные вопросы