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 成员,
我正在使用金字塔形 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 成员,