Pergunta

I am using OpenCV with Visual Studio 2010 to read and display some images(including jpg and png). My program is working fine but sometimes it fails with the following warning :

libpng warning: interlace handling should be turned on when using png_read_image.
OpenCV Error: Insufficient memory (failed to allocate 1398604 bytes) in unknown function, file ..\..\..\src\opencv\modules\core\src\alloc.cpp, line 52

I tried searching on the internet for the fix but couldn't get any. Any help regarding the problem would be greatly appreciated.

Foi útil?

Solução

Put

number_passes = png_set_interlace_handling(png_ptr);

at the appropriate place in the calling application, just after

png_get_IHDR();

If you don't want to rebuild the calling application, a workaround is to use an application such as ImageMagick's "convert" to de-interlace the PNG before you try to read it with your application:

convert in.png -interlace none out.png
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top