У меня есть простой код 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 отображает видео просто отлично.
Похоже, что какой-то файл в папке не является допустимым или оно уже является серым изображением. Попробуйте проверить все файлы и убедиться, что все они являются цветными изображениями (RGB или RGBA). – redobot
Что вы подразумеваете под действующим изображением? Изображения, которые я использую, - это только одно изображение, повторяющееся снова и снова. Это просто одно и то же содержимое файла с другим именем файла. Изображение, которое я использую, определенно является цветным изображением. –
Я имею в виду, поскольку вы копируете изображение (и, я думаю, вы используете какой-то цикл, чтобы пройти через все). Возможно, цикл (или что-то еще, что вы используете) читает неожиданный файл, который не является допустимым изображением. Вы говорите, что он останавливается на определенном кадре, этот кадр равен другим или имеет какую-то разницу? вы можете попытаться использовать команды, такие как файл, идентифицировать, чтобы видеть wither, если этот файл является допустимым изображением, и если он имеет тот же md5sum, что и другие (просто чтобы убедиться, что это копия исходного изображения). – redobot