2015-05-14 5 views
0

Я использовал OpenCV для чтения изображений из папки. Появилось много сообщений, подобных этому:opencv read image «Преждевременный конец файла JPEG»

Corrupt JPEG data: premature end of data segment 
Premature end of JPEG file 
Premature end of JPEG file 
Premature end of JPEG file 

Как поймать это исключение и удалить эти файлы изображений?

+0

и ..................? показать код. –

ответ

0

Поскольку вы сказали, что читаете «изображения» (несколько изображений), вы будете перебирать файлы в папке, из которой вы их читаете. В этом случае, если вы проверите, если изображение является действительным или нет, используя следующие:

Mat image; 
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file 

if(! image.data)        // Check for invalid input 
{ 
    cout << "Could not open or find the image" << std::endl ; 
    return -1; 
} 

вы можете приступить к удалению файлов, которые коррумпированы/плохо.

+0

Кажется, имеются ссылки, которые предлагают использовать imdecode() для решения вашей проблемы, см. [This] (http://w3facility.org/question/how-can-i-catch-corrupt-jpegs-when-loading-an -image-with-imread-in-opencv /) и [это сообщение SO] (http://stackoverflow.com/questions/4271489/little-help-with-cvimdecode) –

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