我正在处理带金字塔的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/