我正在处理带金字塔的tiff文件。但是,OpenCV不支持金字塔状的tiff文件,因此我尝试使用libtiff 4.0.3提取所需的层/目录/分辨率,然后将其传递给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来安装这两个库,因此我不希望不必编辑那些库,因为这将导致获取更新的问题,给我团队中的 future 开发人员带来痛苦。

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

最佳答案

由于这两个库都使用定义“污染”了全局 namespace (并且您知道,在第三方库中拥有适当的 namespace 是多么重要),因此无法将两者都包含到全局 namespace 中。您已将其中一个包裹在用户定义的命名空间中,如下所示:

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

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

关于c++ - OSX上的openCV和libtiff库不兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28703828/

10-12 04:04