opencv与wxwidgets冲突(第三方库jpeg,tiff,png,zlib所引起)
问题:opencv与qwxwidgets都静态链接到tiff,jpeg,png,zlib四个库,当opencv使用静态编译时,在wxwidgets的event事件中处理使用opencv读写jpg,tiff,png图片有时候会出错。原因是opencv读取图片的代码可能与wxwidgets冲突了(具体原因未深入研究)。我遇到的情况是读写jpg文件来出错,读写png,tiff文件正常。对比opencv与wxwidgets使用第三方图像库的版本如下(版本没有大改动,按理说应该不会有问题,除非有一方的代码实现对其进行了某些改动)
第三方库opencv242 wxWidgets294
jpeg 6b (6.2) 6b
png 1.5.91.5.7
tiff 4.0.13.8.2
zlib 1.2.61.2.3
解决办法:双方都使用同一个第三方图像库
前提:拥有已经编译好的第三方图像库。(下载源代码,用gcc编译一下,不难)
opencv 有BUILD_***, WITH_***(其中***表第三方库名称)这两种选项。取消BUILD_***,选中WITH_***表示不使用opencv内部的第三方库,但支持读取***图像的功能。由于取消了BUILD_***,所以必须手动指定这些库的位置,不然opencv还是会使用自身带的第三方库的。指定库的位置指指定其include,lib的位置,如zlib库需定义ZLIB_LIBRARY ZLIB_INCLUDE_DIR两个变量。cmake可以命令行中指定也可以界面中指定,界面中指定效果如下:
<div class="inline-attachment">http://www.opencv.org.cn/forum/download/file.php?id=2969people3.jpg (128.13 KiB) 被浏览 7 次
页:
[1]