映射两个不同库的数据类型

时间:2016-02-16 09:27:48

标签: c++ opencv types mapping type-conversion

我需要将OpenCV的图像数据类型转换为另一个第三方库的类型,反之亦然。这样做的好方法是什么?

目前我使用的是boost::bimap,但也许是更清洁的解决方案。我最大的问题是,OpenCV使用这样的头宏定义所有类型:

#define CV_8U   0
#define CV_8S   1
#define CV_16U  2
#define CV_16S  3
#define CV_32S  4
#define CV_32F  5
#define CV_64F  6

#define CV_8UC1 CV_MAKETYPE(CV_8U,1)
#define CV_8UC2 CV_MAKETYPE(CV_8U,2)

而另一个第三方库通过枚举定义其类型:

typedef enum {
PF_UNKNOWN                  = 0,
PF_8BIT                     = 10,
PF_GREYSCALE_8              = 11,
PF_RGB_8                    = 12, 
PF_16BIT                    = 20,
PF_GREYSCALE_10             = 21,
PF_GREYSCALE_12             = 22,
PF_GREYSCALE_14             = 23,
PF_GREYSCALE_16             = 24,
PF_RGB_444                  = 25,
PF_RGB_555                  = 26,
PF_RGB_565                  = 27,
PF_RGBA_4444                = 28
.....
} tPixelFormat;

因此,我在创建地图时硬编码OpenCV值(这似乎是一种非常糟糕的方法)。

0 个答案:

没有答案