我在MAC OSX 10.9中通过libstdc++
安装了opencv2.4.9和brew install opencv
。
我尝试imread
来自INRIA行人数据库的图像。问题是,当我使用opencv读取PNG
格式图像时,我总是会收到此错误:
libpng error: IDAT: invalid distance too far back
libpng的版本是1.6.13,它也是由brew install
命令安装的。
任何人都可以帮我吗?非常感谢。
答案 0 :(得分:0)
我刚刚解决了这个问题。首先,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来阅读它。
我找到了解决这个问题的另一种方法。这种方式更好。
首先,brew edit opencv
并转到包含depends_on :libpng
的行。
然后,按“我'并切换到编辑模式。将depends_on :libpng
更改为depends_on "libpng12"
。按:wq
保存。
最后,brew install opencv
。
通过这样做,opencv将使用libpng12
而不是libpng16
进行编译。