OSX 上不兼容的 openCV 和 libtiff 库

Incompatible openCV and libtiff libs on OSX

我正在使用金字塔形 tiff 文件。但是,OpenCV 不支持金字塔式 tiff 文件,因此我尝试使用 libtiff 4.0.3 提取我需要的 layer/directory/resolution,然后将其传递给 OpenCV 进行处理。

我包括如下:

#include "tiffio.h"
#include "opencv2/highgui/highgui.hpp"

但是这样做让我在 types_c.h 中得到以下结果:

typedef int64_t int64;
Typedef redefinition with different types ('int64_t(aka 'long long') vs 'long')

看来 int64_t 两个库中的每一个都有不同的定义。

我已经使用 homebrew 安装了这两个库,所以我宁愿不必编辑这些库,因为这会导致获取更新出现问题,对我团队中未来的开发人员造成痛苦等.

有没有一种方法可以在不修改它们的情况下使用这两个库?

由于两个库 "polute" 都带有定义的全局命名空间(你看,在第三方库中拥有适当的命名空间是多么重要),因此无法将两者都包含到全局命名空间中。您已将其中之一包含在用户定义的命名空间中,如下所示:

namespace libtiff {
    #include "tiffio.h"
}
#include "opencv2/highgui/highgui.hpp"

这将解决编译问题,但我不确定此解决方案是否方便使用,因为您必须使用 libtif:: 前缀来使用 libtiff 成员,