我已经在MAC OSX 10.9中安装了带有libstdc++
到brew install opencv
的opencv2.4.9。
我尝试imread
来自INRIA行人数据库的图像。问题是,当我使用opencv读取PNG
格式的图像时,我总是会收到以下错误:libpng error: IDAT: invalid distance too far back
libpng的版本是1.6.13,也是通过brew install
命令安装的。
有人能帮我吗?非常感谢。
我刚刚解决了这个问题。首先是brew uninstall libpng
和brew uninstall opencv
。然后是brew install libpng12
和brew install --build-from-source --fresh -vd opencv
。在此过程中,还会安装libpng。即使同时安装了libpng
和libpng12
,opencv也只会使用libpng12
。
我想INRIA数据库中的图像可能对libpng-1.6.13
库有点旧。因此,我们必须使用旧的libpng版本libpng12来读取它
更新日期:2014.10.29
我找到了另一种方法来解决这个问题。这样更好。首先,brew edit opencv
,然后转到包含depends_on :libpng
的行。然后,按"i"并切换到编辑模式。将CCD_ 17改变为CCD_。按:wq
保存。最后,brew install opencv
。
通过这样做,opencv将使用libpng12
而不是libpng16
进行编译。