OSX上的openCV和libtiff库不兼容

Incompatible openCV and libtiff libs on OSX

本文关键字:不兼容 libtiff 上的 openCV OSX      更新时间:2023-10-16

我正在使用一个金字塔型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安装了这两个库,所以我不想编辑这些库,因为这会导致更新问题,给我团队的未来开发人员带来痛苦,等等。

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

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

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

这将解决编译问题,尽管我不确定这个解决方案是否方便使用,因为您必须使用libtif::prefix的libtiff成员,