Skip to content

API v1.2.0(C)

taotianran edited this page Apr 11, 2023 · 3 revisions

API 文档(C接口)

  1. C API 目录

  2. C API 详细中文说明

1. C API 目录



2. API 详细中文说明

core

命名空间

默认命名空间:fcv


枚举类型

CFCVImageType

声明文件: modules/core/cmat/interface/basic_types_c.h

说明: 图像类型枚举

enum CFCVImageType {
    GRAY_U8 = 0,            // 单通道,unsigned char存储
    GRAY_U16,               // 单通道,unsigned short存储
    GRAY_S16,               // 单通道,signed short存储
    GRAY_S32,               // 单通道,int32存储
    GRAY_F32,               // 单通道,float32存储
    GRAY_F64,               // 单通道,double存储
    PLA_BGR_U8 = 20,        // 三通道,unsigned char存储,存储顺序:BBB...GGG...RRR...
    PLA_RGB_U8,             // 三通道,unsigned char存储,存储顺序:RRR...GGG...BBB...
    PKG_BGR_U8,             // 三通道,unsigned char存储,存储顺序:BGRBGR...
    PKG_RGB_U8,             // 三通道,unsigned char存储,存储顺序:RGBRGB...
    PLA_BGRA_U8,            // 四通道,unsigned char存储,存储顺序:BBB...GGG...RRR...AAA...
    PLA_RGBA_U8,            // 四通道,unsigned char存储,存储顺序:RRR...GGG...BBB...AAA...
    PKG_BGRA_U8,            // 四通道,unsigned char存储,存储顺序:BGRABGRA...
    PKG_RGBA_U8,            // 四通道,unsigned char存储,存储顺序:RGBARGBA...
    PLA_BGR_F32 = 40,       // 三通道,float存储,存储顺序:BBB...GGG...RRR...
    PLA_RGB_F32,            // 三通道,float存储,存储顺序:RRR...GGG...BBB...
    PKG_BGR_F32,            // 三通道,float存储,存储顺序:BGRBGR...
    PKG_RGB_F32,            // 三通道,float存储,存储顺序:RGBRGB...
    PLA_BGRA_F32,           // 四通道,float存储,存储顺序:BBB...GGG...RRR...AAA...
    PLA_RGBA_F32,           // 四通道,float存储,存储顺序:RRR...GGG...BBB...AAA...
    PKG_BGRA_F32,           // 四通道,float存储,存储顺序:BGRABGRA...
    PKG_RGBA_F32,           // 四通道,float存储,存储顺序:RGBARGBA...
    PKG_BGR_F64,            // 三通道,double存储,存储顺序:BGRBGR...
    PKG_RGB_F64,            // 三通道,double存储,存储顺序:RGBRGB...
    PKG_BGRA_F64,           // 四通道,double存储,存储顺序:BGRABGRA...
    PKG_RGBA_F64,           // 四通道,double存储,存储顺序:RGBARGBA...
    PKG_BGR565_U8,          // 三通道,unsigned char存储,存储顺序:BGRBGR...
    PKG_RGB565_U8,          // 三通道,unsigned char存储,存储顺序:RGBRGB...
    NV12 = 60,              // YUV420SP类型,像素占比为Y:V:U=4:1:1,存储顺序:YYY...UVUV...
    NV21,                   // YVU420SP类型,像素占比为Y:U:V=4:1:1,存储顺序:YYY...VUVU...
    I420,                   // YUV420P类型,像素占比为Y:U:V=4:1:1,存储顺序:YYY...UUU...VVV...
};

CInterpolationType

声明文件: modules/core/cmat/interface/basic_types_c.h

说明: 插值类型枚举

enum CInterpolationType {
    INTER_NEAREST = 0,          // 最近邻插值
    INTER_LINEAR,               // 双线性插值
    INTER_CUBIC,                // 立方插值
    INTER_AREA,                 // 区域插值
    WARP_INVERSE_MAP = 16       // 双线性插值(变换矩阵不求逆)
};

CBorderType

声明文件: modules/core/cmat/interface/basic_types_c.h

说明: 边缘填充类型

enum CBorderType {
    BORDER_CONSTANT    = 0, //!< `iiiiii|abcdefgh|iiiiiii`  with some specified `i`
    BORDER_REPLICATE   = 1, //!< `aaaaaa|abcdefgh|hhhhhhh`
    BORDER_REFLECT     = 2, //!< `fedcba|abcdefgh|hgfedcb`
    BORDER_WRAP        = 3, //!< `cdefgh|abcdefgh|abcdefg`
    BORDER_REFLECT_101 = 4, //!< `gfedcb|abcdefgh|gfedcba`
    BORDER_TRANSPARENT = 5  //!< `uvwxyz|abcdefgh|ijklmno`
};

CNormType

声明文件: modules/core/cmat/interface/basic_types_c.h

说明: 范数类型

enum NormType {
    NORM_INF       = 0,    // 无穷范数,所有元素中绝对值最大的数
    NORM_L1,               // L1范数,各个元素绝对值之和
    NORM_L2                // L2范数,各个元素平方和的平方根
};

结构体

CSize

声明文件: modules/core/cmat/interface/basic_types_c.h

typedef struct {
    int width;
    int height;
} CSize;

说明: 用于存储图像的宽高信息。


CPoint

声明文件: modules/core/cmat/interface/basic_types_c.h

typedef struct {
    int x;
    int y;
} CPoint;

说明: 存储坐标点数据。


CRect

声明文件: modules/core/cmat/interface/basic_types_c.h

typedef struct {
    int x;      // 矩形左上角X坐标
    int y;      // 矩形左上角Y坐标
    int width;  // 矩形宽度
    int height; // 矩形高度
} CRect;

说明: 用于存储矩形框信息。


CRotatedRect

声明文件: modules/core/cmat/interface/basic_types_c.h

typedef struct {
    CSize2f size;     // 旋转矩形宽高
    CPoint2f center;  // 旋转矩形中心点坐标
    float angle;      // 旋转矩形角度
} CRotatedRect;

说明: 用于存储带有角度信息的矩形框数据。


CScalar

声明文件: modules/core/cmat/interface/basic_types_c.h

typedef struct {
    double val[4];
} CScalar;

说明: 存储标量数据。存储数据上限为4,通常对应图像数据的不同channel。


CMat

声明文件: modules/core/cmat/interface/cmat.h

typedef struct {
    int width;                    // 宽度
    int height;                   // 高度
    CFCVImageType type;           // 图像类型
    int channels;                 // 通道数量
    int stride;                   // 单行数据字节数
    uint64_t total_byte_size;     // 数据总字节数
    int type_byte_size;           // 数据类型所占字节数
    void* data;                   // 数据指针
} CMat;

说明: 图像数据结构体。需要手动进行创建/释放


函数

fcvCreateCMat

声明文件: modules/core/cmat/interface/cmat.h

函数原型

CMat* fcvCreateCMat(int width, int height, CFCVImageType type);

说明: 创建CMat数据,返回指向CMat数据的指针。

参数 类型 说明
width int 图像宽度
height int 图像高度
type CFCVImageType 图像数据类型

fcvReleaseCMat

声明文件: modules/core/cmat/interface/cmat.h

函数原型

int fcvReleaseCMat(CMat* mat);

说明: 释放CMat数据。

参数 类型 说明
mat CMat* 指向CMat数据的指针

fcvSetLogStatus

声明文件: modules/core/base/interface/log_c.h

函数原型

void fcvSetLogStatus(int status);

说明: 设置日志开关。

参数 类型 说明
status int 设置日志状态,默认开启。0:关闭日志;1:开启日志

fcvGetLogStatus

声明文件: modules/core/base/interface/log_c.h

函数原型

int fcvGetLogStatus();

说明: 获取日志开关状态。


img_transform

枚举类型

CColorConvertType

说明: 颜色空间转换枚举

enum CColorConvertType {
    CVT_PA_BGR2GRAY = 0,
    CVT_PA_RGB2GRAY,

    CVT_PA_BGR2PA_RGB,
    CVT_PA_RGB2PA_BGR,
    CVT_PA_BGR2PA_BGRA,
    CVT_PA_RGB2PA_RGBA,
    CVT_PA_BGR2PA_RGBA,
    CVT_PA_RGB2PA_BGRA,
    CVT_PA_BGRA2PA_BGR,
    CVT_PA_RGBA2PA_RGB,
    CVT_PA_RGBA2PA_BGR,
    CVT_PA_BGRA2PA_RGB,
    CVT_PA_BGRA2PA_RGBA,
    CVT_PA_RGBA2PA_BGRA,

    CVT_GRAY2PA_RGB,
    CVT_GRAY2PA_BGR,
    CVT_GRAY2PA_BGRA,
    CVT_GRAY2PA_RGBA,

    CVT_PA_BGR2NV12,
    CVT_PA_BGR2NV21,
    CVT_PA_RGB2NV12,
    CVT_PA_RGB2NV21,

    CVT_PA_BGRA2NV12,
    CVT_PA_BGRA2NV21,
    CVT_PA_RGBA2NV12,
    CVT_PA_RGBA2NV21,

    CVT_NV122PA_RGB,
    CVT_NV212PA_RGB,
    CVT_NV122PA_BGR,
    CVT_NV212PA_BGR,
    CVT_I4202PA_BGR,

    CVT_NV122PA_BGRA,
    CVT_NV212PA_BGRA,
    CVT_NV122PA_RGBA,
    CVT_NV212PA_RGBA,

    CVT_PA_BGR2PL_BGR,  //bgrbgrbgr... convert to bbb...ggg...rrr
    CVT_PL_BGR2PA_BGR,  //bb..gg..rr.. convert to bgrbgr..

    CVT_PA_GRAY2PA_BGR565,
    CVT_PA_BGR2PA_BGR565,
    CVT_PA_RGB2PA_BGR565,
    CVT_PA_BGRA2PA_BGR565,
    CVT_PA_RGBA2PA_BGR565,

    CVT_PA_RGBA2PA_mRGBA,
};

说明: CColorConvertType类型名中的PA指代Package排列,PL为Planar排列,左侧指源格式,右侧指目标格式。

类型 源格式 目标格式
CVT_PA_BGR2GRAY PACKAGE排列,三通道,BGR图像 单通道,灰度图
CVT_PA_RGB2GRAY PACKAGE排列,三通道,RGB图像 单通道,灰度图
CVT_PA_BGR2PA_RGB PACKAGE排列,三通道,BGR图像 PACKAGE排列,三通道,RGB图像
CVT_PA_RGB2PA_BGR PACKAGE排列,三通道,RGB图像 PACKAGE排列,三通道,BGR图像
CVT_PA_BGR2PA_BGRA PACKAGE排列,三通道,BGR图像 PACAKGE排列,四通道,BGRA图像
CVT_PA_RGB2PA_RGBA PACKAGE排列,三通道,RGB图像 PACAKGE排列,四通道,RGBA图像
CVT_PA_BGR2PA_RGBA PACKAGE排列,三通道,BGR图像 PACAKGE排列,四通道,RGBA图像
CVT_PA_RGB2PA_BGRA PACKAGE排列,三通道,RGB图像 PACAKGE排列,四通道,BGRA图像
CVT_PA_BGRA2PA_BGR PACKAGE排列,四通道,BGRA图像 PACKAGE排列,三通道,BGR图像
CVT_PA_RGBA2PA_RGB PACKAGE排列,四通道,RGBA图像 PACKAGE排列,三通道,RGB图像
CVT_PA_RGBA2PA_BGR PACKAGE排列,四通道,RGBA图像 PACKAGE排列,三通道,BGR图像
CVT_PA_BGRA2PA_RGB PACKAGE排列,四通道,BGRA图像 PACKAGE排列,三通道,RGB图像
CVT_PA_BGRA2PA_RGBA PACKAGE排列,四通道,BGRA图像 PACKAGE排列,四通道,RGBA图像
CVT_PA_RGBA2PA_BGRA PACKAGE排列,四通道,RGBA图像 PACKAGE排列,四通道,BGRA图像
CVT_GRAY2PA_RGB 单通道,灰度图 PACKAGE排列,三通道,RGB图像
CVT_GRAY2PA_BGR 单通道,灰度图 PACKAGE排列,三通道,BGR图像
CVT_GRAY2PA_BGRA 单通道,灰度图 PACKAGE排列,四通道,BGRA图像
CVT_GRAY2PA_RGBA 单通道,灰度图 PACKAGE排列,四通道,RGBA图像
CVT_PA_BGR2NV12 PACKAGE排列,三通道,BGR图像 NV12图像
CVT_PA_BGR2NV21 PACKAGE排列,三通道,BGR图像 NV21图像
CVT_PA_RGB2NV12 PACKAGE排列,三通道,RGB图像 NV12图像
CVT_PA_RGB2NV21 PACKAGE排列,三通道,RGB图像 NV21图像
CVT_PA_BGRA2NV12 PACKAGE排列,四通道,BGRA图像 NV12图像
CVT_PA_BGRA2NV21 PACKAGE排列,四通道,BGRA图像 NV21图像
CVT_PA_RGBA2NV12 PACKAGE排列,四通道,RGBA图像 NV12图像
CVT_PA_RGBA2NV21 PACKAGE排列,四通道,RGBA图像 NV21图像
CVT_NV122PA_RGB NV12图像 PACKAGE排列,三通道,RGB图像
CVT_NV212PA_RGB NV21图像 PACKAGE排列,三通道,RGB图像
CVT_NV122PA_BGR NV12图像 PACKAGE排列,三通道,BGR图像
CVT_NV212PA_BGR NV21图像 PACKAGE排列,三通道,BGR图像
CVT_I4202PA_BGR I420图像 PACKAGE排列,三通道,BGR图像
CVT_NV122PA_BGRA NV12图像 PACKAGE排列,四通道,BGRA图像
CVT_NV212PA_BGRA NV21图像 PACKAGE排列,四通道,BGRA图像
CVT_NV122PA_RGBA NV12图像 PACKAGE排列,四通道,RGBA图像
CVT_NV212PA_RGBA NV21图像 PACKAGE排列,四通道,RGBA图像
CVT_PA_BGR2PL_BGR PACKAGE排列,三通道,BGR图像 PLANAR排列,三通道,BGR图像
CVT_PL_BGR2PA_BGR PLANAR排列,三通道,BGR图像 PACKAGE排列,三通道,BGR图像
CVT_PA_GRAY2PA_BGR565 单通道,灰度图 PACKAGE排列,三通道,BGR图像
CVT_PA_BGR2PA_BGR565 PACKAGE排列,三通道,BGR图像 PACKAGE排列,三通道,BGR图像(存储位数不一样)
CVT_PA_RGB2PA_BGR565 PACKAGE排列,三通道,RGB图像 PACKAGE排列,三通道,BGR图像
CVT_PA_BGRA2PA_BGR565 PACKAGE排列,四通道,BGRA图像 PACKAGE排列,三通道,BGR图像
CVT_PA_RGBA2PA_BGR565 PACKAGE排列,四通道,RGBA图像 PACKAGE排列,三通道,BGR图像

CFlipType

说明: 翻转类型枚举

enum CFlipType {
    X = 0,  // 沿X轴翻转
    Y,      // 沿Y轴翻转
    XY,     // 沿XY轴翻转
};

函数

fcvCvtColor

声明文件: modules/img_transform/color_convert/interface/color_convert_c.h

int fcvCvtColor(CMat* src, CMat* dst, CColorConvertType cvt_type);

说明: 该接口主要用于输入图像数据连续的情况下,进行颜色空间转换,支持单通道、三通道,支持u8数据。

返回值为0表示转换成功,不为0则表示转换失败。

参数 类型 说明
src CMat* 输入数据指针
dst CMat* 输出数据指针(需要在调用前初始化,开辟空间,不可传空指针)
cvt_type CColorConvertType 颜色空间转换类型

fcvCopyMakeBorder

声明文件: modules/img_transform/copy_make_border/interface/copy_make_border_c.h

int fcvCopyMakeBorder(
        CMat* src,
        CMat* dst,
        int top,
        int bottom,
        int left,
        int right,
        CBorderType border_type,
        CScalar* value);

说明: 边界填充方法。返回值为0表示成功,不为0则失败。

参数 类型 说明
src CMat* 源图像指针,仅支持PACKAGE格式图像,支持int8、int16、int32、f32以及f64数据
dst CMat* 目标图像指针(需要在调用前初始化,开辟空间,不可传空指针)
top int 图像顶部填充长度
bottom int 图像底部填充长度
left int 图像左边填充长度
right int 图像右边填充长度
border_type CBorderType 边界填充算法,目前只支持BORDER_CONSTANT
value CScalar* 填充的像素值,默认为全0

fcvCrop

声明文件: modules/img_transform/crop/interface/crop_c.h

int fcvCrop(CMat* src, CMat* dst, CRect* rect)

说明: 根据源图像内的指定子矩形框进行扣图(目前仅支持PACKAGE排列的RGB颜色空间数据,支持多通道1-4)。返回值为0表示裁剪成功,不为0表示裁剪失败。

参数 类型 说明
src CMat* 源图像地址
dst CMat* 输出图像地址(需要在调用前初始化,开辟空间,不可传空指针)
rect CRect* 裁剪矩形框地址

fcvFlip

声明文件: modules/img_transform/flip/interface/flip_c.h

int fcvFlip(CMat* src, CMat* dst, CFlipType type);

说明: 图像翻转方法。

参数 类型 说明
src CMat* 源图像,支持单通道,三通道,支持u8/f32
dst CMat* 目标图像(需要在调用前初始化,开辟空间,不可传空指针)
type CFlipType 翻转类型,支持X轴、Y轴、XY轴翻转

fcvRemap

声明文件: modules/img_transform/remap/interface/remap_c.h

int fcvRemap(
        CMat* src,
        CMat* dst,
        CMat* map1,
        CMat* map2,
        CInterpolationType inter_type,
        CBorderType border_method,
        CScalar* border_value);

说明: 重映射计算。

参数 类型 说明
src CMat* 源图像地址,支持单通道、三通道,支持u8/f32
dst CMat* 目标图像地址(需要在调用前初始化,开辟空间,不可传空指针)
map1 CMat* 表示(x,y)坐标点或是x坐标,类型为GRAY_S16或者GRAY_F32
map2 CMat* 表示y坐标
inter_type CInterpolationType 使用的插值算法,仅支持双线性插值
border_method CBorderType 使用的边界填充算法,仅支持常量填充
border_value CScalar* 边界填充值

fcvResize

声明文件: modules/img_transform/resize/interface/resize_c.h

int fcvResize(
        CMat* src,
        CMat* dst,
        CInterpolationType interpolation);

说明: 图像缩放方法。

参数 类型 说明
src CMat* 输入图像地址,支持1,3,4通道
dst CMat* 输出图像地址(需要在调用前初始化,开辟空间,不可传空指针)
interpolation CInterpolationType 缩放插值计算方式,默认为双线性插值

fcvTranspose

声明文件: modules/img_transform/rotation/interface/rotation_c.h

int fcvTranspose(CMat* src, CMat* dst);

说明: 对源矩阵进行矩阵转置后输出结果至目标矩阵。返回值为0表示转置成功,不为0表示转置失败。

参数 类型 说明
src CMat* 源图像地址,支持多通道,支持u8/f32
dst CMat* 输出图像地址(需要在调用前初始化,开辟空间,不可传空指针)

fcvSubtract

声明文件: modules/img_transform/subtract/interface/subtract_c.h

函数原型

int fcvSubtract(CMat* src, CScalar* scalar, CMat* dst);

说明:矩阵减法,各个通道像素值减去对应的scalar对应值。

参数 类型 说明
src CMat* 原图像地址,仅支持f32,支持多通道
scalar CScalar* 各通道需要减去的值
dst CMat* 目标图像地址(需要在调用前初始化,开辟空间,不可传空指针)

fcvGetAffineTransform

声明文件: modules/img_transform/warp_affine/interface/warp_affine_c.h

CMat* fcvGetAffineTransform(CPoint2f src[], CPoint2f dst[]);

说明: 该接口主要根据输入的映射源点坐标集与目标坐标集,计算仿射变换的系数矩阵。

返回值不为空表示成功,为空表示失败。

参数 类型 说明
src CPoint2f src[] 源像素点集合
dst CPoint2f dst[] 目标像素点对象集合

fcvGetRotationMatrix2D

声明文件: modules/img_transform/warp_affine/interface/warp_affine_c.h

CMat* fcvGetRotationMatrix2D(CPoint2f center, double angle, double scale);

说明: 该接口主要根据输入的中心点、旋转角度、缩放比例等参数计算仿射变换的系数矩阵。

返回值不为空表示成功,为空表示失败。

参数 类型 说明
center CPoint2f 中心点坐标对象
angle double 旋转角度值
scale double 缩放系数值

fcvWarpAffine

声明文件: modules/img_transform/warp_affine/interface/warp_affine_c.h

int fcvWarpAffine(
        CMat* src,
        CMat* dst,
        CMat* m,
        CInterpolationType flag,
        CBorderType border_method,
        CScalar* border_value);

说明: 执行从源图像到目标图像的仿射变换操作。返回值为0表示变换成功,不为0表示变换失败。

参数 类型 说明
src CMat* 源图像地址,支持多通道,支持u8/f32
dst CMat* 输出图像地址(需要在调用前初始化,开辟空间,不可传空指针)
m CMat* 变换系数矩阵**(目前仅支持:宽3,高2,单通道,float或double数据类型)**
flag CInterpolationType 插值方式,仅支持双线性插值
border_method CBorderType 边界填充方式,仅支持常量填充
borderValue CScalar* 填充的边界值

fcvGetPerspectiveTransform

声明文件: modules/img_transform/warp_perspective/interface/warp_perspective_c.h

CMat* fcvGetPerspectiveTransform(CPoint2f src[], CPoint2f dst[]);

说明: 计算透视变换变换矩阵。

参数 类型 说明
src Point2f[] 源点
dst Point2f[] 目标点

fcvWarpPerspective

声明文件: modules/img_transform/warp_perspective/interface/warp_perspective_c.h

int fcvWarpPerspective(
        CMat* src,
        CMat* dst,
        CMat* m,
        CInterpolationType flag,
        CBorderType border_method,
        CScalar* border_value);

说明: 透视变换。

参数 类型 说明
src CMat* 源图,支持多通道,支持u8/f32
dst CMat* 目标图
m CMat* 透视变换矩阵
flag CInterpolationType 插值变换,仅支持双线性插值
border_method CBorderType 边界填充方式,仅支持常量填充
border_value CScalar* 填充的值

fcvAddWeighted

声明文件: modules/img_transform/add_weighted/interface/add_weighted_c.h

int fcvAddWeighted(
        CMat* src1,
        double alpha,
        CMat* src2,
        double beta,
        double gamma,
        CMat* dst);

说明: 图像融合方法。

参数 类型 说明
src1 CMat* 第一张输入图像地址,支持三通道
alpha double 第一张输入权重
src2 CMat* 第二张输入图像地址,支持三通道
beta double 第二张输入权重
gamma double 图一和图二融合后添加的值
dst CMat* 输出图像地址(需要在调用前初始化,开辟空间,不可传空指针)

fcvExtractChannel

声明文件: modules/img_transform/extract_channel/interface/extract_channel_c.h

int fcvExtractChannel(
        CMat* src,
        CMat* dst,
        int index);

说明: 原图中提取某一个指定的单通道。

参数 类型 说明
src CMat* 输入图像地址,仅支持PKG_BGR_U8格式图像
dst CMat* 输出图像地址(需要在调用前初始化,开辟空间,不可传空指针)
index int 提取通道的索引位置

img_calculation

函数

fcvConnectedComponents

声明文件: modules/img_calculation/connected_componets/interface/connected_components_c.h

int fcvConnectedComponents(
        CMat* src,
        CMat* labels,
        int connectivity,
        CFCVImageType type);

说明: 连通域计算。

参数 类型 说明
src CMat* 源图像,仅支持单通道
labels CMat* 标签
connectivity int 连通数
type CFCVImageType labels的数据类型,仅支持int32

fcvFindHomography

声明文件: modules/img_calculation/find_homography/interface/find_homography_c.h

CMat* fcvFindHomography(
        CPoint2f* src_pts,
        CPoint2f* dst_pts,
        int pts_num,
        int method);

说明: 二维点对最优单映射变换矩阵计算。

参数 类型 说明
src_points CPoint2f* 源点数据地址
dst_points CPoint2f* 目标数据点地址
pts_num int 点数量
method int 计算单映矩阵的方法,当前仅支持0

fcvMatrixMul

声明文件: modules/img_calculation/matrix_mul/interface/matrix_mul_c.h

CMat* fcvMatrixMul(CMat* src0, CMat* src1);

说明: 矩阵乘。

参数 类型 说明
src0 CMat* 点乘左边矩阵,支持f32c1和f64c1
src1 CMat* 点乘右边矩阵,支持f32c1和f64c1

fcvMean

直接均值计算

声明文件: modules/img_calculation/mean/interface/mean_c.h

CScalar fcvMean(CMat* src);

说明: 对输入数据的各个通道,分别求均值(支持格式为1~4通道RGB颜色空间图像数据)。

参数 类型 说明
src CMat* 源图像数据地址

fcvMeanStddev

声明文件: modules/img_calculation/mean/interface/mean_c.h

int fcvMeanStddev(CMat* src, CMat* mean, CMat* stddev);

说明: 对输入数据的各个通道,分别求均值和标准差,计算结果以矩阵形式存储(支持格式为1~4通道RGB颜色空间图像数据)

参数 类型 说明
src CMat* 源图像数据地址
mean CMat* 均值结果(需要在调用前初始化,开辟空间,不可传空指针)
stddev CMat* 标准差结果(需要在调用前初始化,开辟空间,不可传空指针)

fcvMinAreaRect

声明文件: modules/img_calculation/min_area_rect/interface/min_area_rect_c.h

CRotatedRect fcvMinAreaRect(CPoint* pts, int pts_num);

说明: 计算最小外接矩形。

参数 类型 说明
pts CPoint* 坐标点数据地址
pts_num int 坐标点数量

fcvMinMaxLoc

声明文件: modules/img_calculation/min_max_loc/interface/min_max_loc_c.h

int fcvMinMaxLoc(
        CMat* src,
        double* min_val,
        double* max_val,
        CPoint* min_loc,
        CPoint* max_loc,
        CMat* mask);

说明: 计算输入数据最大、最小值。

参数 类型 说明
src CMat* 源图地址,仅支持单通道
min_val double* 存储最小值的地址
max_val double* 存储最大值的地址
min_loc CPoint* 存储最小值在原图中的位置
max_loc CPoint* 存储最大值在原图中的位置
mask CMat* 指定参与计算的范围,与原图同样大小的gray_u8数据

fcvNorm

声明文件: modules/img_calculation/norm/interface/norm_c.h

double fcvNorm(CMat* src, CNormType norm_type);

说明: 范数计算。

参数 类型 说明
src CMat* 源图地址,支持1-4通道
norm_type CNormType 范数计算类型,支持L1、L2、INF

fusion_api

函数

fcvNv12ToResizeToBgr

声明文件: modules/fusion_api/y420sp_to_resize_to_bgr/interface/y420sp_to_resize_to_bgr_c.h

int fcvNv12ToResizeToBgr(
        CMat* src,
        CMat* dst,
        CInterpolationType interpolation);

说明: 对输入NV12格式源图像,缩放至目标图像大小,并同时转换为PACKAGE_BGR_U8格式。

返回值为0表示运行成功,不为0表示运行失败

参数 类型 说明
src CMat* 源图像数据地址,u8数据
dst CMat* 输出图像数据地址,u8数据(需要在调用前初始化,开辟空间,不可传空指针)
interpolation CInterpolationType 使用的插值算法,仅支持双线性插值和最近邻插值

fcvNv21ToResizeToBgr

声明文件: modules/fusion_api/y420sp_to_resize_to_bgr/interface/y420sp_to_resize_to_bgr_c.h

int fcvNv21ToResizeToBgr(
        CMat* src,
        CMat* dst,
        CInterpolationType interpolation);

说明: 对输入NV21格式源图像,缩放至目标图像大小,并同时转换为PACKAGE_BGR_U8格式

返回值为0表示运行成功,不为0表示运行失败

参数 类型 说明
src CMat* 源图像数据地址,u8数据
dst CMat* 输出图像数据地址,u8数据(需要在调用前初始化,开辟空间,不可传空指针)
interpolation CInterpolationType 使用的插值算法,仅支持双线性插值和最近邻插值

fcvNormalizeToSubmeanToReorder

声明文件: modules/fusion_api/normalize_to_submean_to_reorder/interface/normalize_to_submean_to_reorder_c.h

int fcvNormalizeToSubmeanToReorder(
        CMat* src,
        float mean_params[],
        float std_params[],
        int channel_reorder_index[],
        CMat* dst,
        bool output_package);

说明:对输入PACKAGE_BGR_U8格式源图像,按次序进行如下操作:

①根据输入参数设定三个通道的减法系数mean_params与除法系数std_params;

②遍历所有像素,每个u8通道值转换为浮点数,然后先减去对应通道的减法系数,再除以对应通道的除法系数;

③将计算结果由PACKAGE分布转换为PLANAR分布;

④根据输入的channel_reorder_index参数对各个通道planar顺序进行重新排序。

⑤输出package或者planar格式数据

返回值为0表示运行成功,不为0表示运行失败

参数 类型 说明
src CMat* 源图像地址,支持bgr/rgb u8/f32数据
mean_params float[] 三通道减法系数
std_params float[] 三通道除法系数
channel_reorder_index int[] 通道重排序索引,注:该参数支持为空对象引用(即不重排序),非空对象引用,则实际元素取值范围仅限[0, 1, 2]
dst CMat* 输出图像地址(需要在调用前初始化,开辟空间,不可传空指针)
output_package bool 输出数据是否为package格式,false:planar, true:package

fcvBgrToRgbaWithMask

声明文件: modules/fusion_api/bgr_to_rgba_with_mask/interface/bgr_to_rgba_with_mask_c.h

int fcvBgrToRgbaWithMask(CMat* src, CMat* mask, CMat* dst);

说明: 输入bgr三通道package格式u8图像,与单通道u8图像(Alpha通道),输出rgba四通道package格式u8图像。

返回值为0表示运行成功,不为0表示运行失败

参数 类型 说明
src CMat* 源图像地址,仅支持三通道、u8、package格式数据
mask CMat* Alpha通道,单通道u8
dst CMat* 输出图像地址(需要在调用前初始化,开辟空间,不可传空指针)

fcvSplitToMemcpy

声明文件: modules/fusion_api/split_to_memcpy/interface/split_to_memcpy_c.h

int fcvSplitToMemcpy(CMat* src, float* dst);

说明: 输入bgr三通道package格式float图像,转换为planar形式,并拷贝至指定目标地址

返回值为0表示运行成功,不为0表示运行失败。

参数 类型 说明
src CMat* 源图像地址,仅支持三/四通道package格式float图像
dst float* 输出数据地址

fcvBgraToResizeToBgr

声明文件: modules/fusion_api/bgra_to_resize_to_bgr/interface/bgra_to_resize_to_bgr_c.h

int fcvBgraToResizeToBgr(
        CMat* src,
        CMat* dst,
        CInterpolationType interpolation);

说明: 输入bgra四通道package格式图像,转换为bgr三通道package格式,并进行缩放。

返回值为0表示运行成功,不为0表示运行失败。

参数 类型 说明
src CMat* 源图像,支持u8数据
dst CMat* 目标图像,支持u8数据(需要在调用前初始化,开辟空间,不可传空指针)
interpolation CInterpolationType 插值方式,仅支持双线性插值

img_draw

枚举类型

CLineType

enum CLineType {
    FILLED = -1,
    LINE_4 = 4,   //!< 4-connected line
    LINE_8 = 8,   //!< 8-connected line
    LINE_AA = 16  //!< antialiased line, not support now
};

函数

fcvCircle

声明文件: modules/img_draw/circle/interface/circle_c.h

int fcvCircle(
        CMat* img,
        CPoint center,
        int radius,
        CScalar* color,
        int thickness,
        CLineType line_type, 
        int shift);

说明: 绘制圆形。

参数 类型 说明
img CMat* 源图像
center CPoint 中心点坐标
radius int 半径
color CScalar* 颜色
thickness int 正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充
line_type CLineType 圆边界类型,支持LINE_4,LINE_8
shift int 中心坐标和半径值中的小数位数

fcvLine

声明文件: modules/img_draw/line/interface/line_c.h

 int fcvLine(
        CMat* img,
        CPoint pt1,
        CPoint pt2,
        CScalar* color,
        int thickness,
        CLineType line_type,
        int shift);

说明: 绘制直线。

参数 类型 说明
img CMat* 源图像
pt1 CPoint 直线端点坐标
pt2 CPoint 直线端点坐标
color CScalar* 颜色
thickness int 正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充
line_type CLineType 边界类型
shift int 坐标点小数点位数

fcvFillPoly

声明文件: modules/img_draw/fill_poly/interface/fill_poly_c.h

int fcvFillPoly(
        CMat* img,
        const CPoint** pts,
        const int* npts,
        int ncontours,
        CScalar* color,
        CLineType line_type,
        int shift,
        CPoint* offset);

说明: 多边形绘制填充。

参数 类型 说明
img CMat* 源图像地址
pts const Point** pts 多边形曲线数组
npts const int* 多边形顶点计数器数组
ncontours int 曲线数
color CScalar* 颜色
line_type CLineType 边界类型
shift int 坐标点小数点位数
offset CPoint* 轮廓点偏移量

fcvPolyLines

声明文件: modules/img_draw/poly_lines/interface/poly_lines_c.h

int fcvPolyLines(
        CMat* img,
        const CPoint2l* v,
        int count,
        bool is_closed,
        const void* color,
        int thickness,
        CLineType line_type,
        int shift);

说明: 多边形绘制。

参数 类型 说明
img CMat* 源图像地址
v const CPoint2l* 多边形曲线数组
count int 绘制多边形的个数
is_closed bool 表示多边形是否闭合, 1:闭合,0:不闭合
thickness int 线条宽度
line_type CLineType 边界类型
shift int 坐标点小数点位数

media_io

函数

fcvImread

声明文件: modules/imgcodecs/interface/imgcodecs_c.h

CMat* fcvImread(const char* file_name, int flags);

说明: 读取指定路径的图像文件,文件格式及后缀仅支持jpg或jpeg,(仅支持PKG_BGR_U8或GRAY_U8

返回对象非空表示运行成功,为空则表示运行失败

参数 类型 说明
file_name const char* 待读取文件路径
flags int 保留字段,可忽略

fcvImwrite

声明文件: modules/imgcodecs/interface/imgcodecs_c.h

int fcvImwrite(
        const char* file_name,
        CMat* img,
        int quality);

说明: 将指定Mat数据写为图像文件,文件格式及后缀仅支持jpg或jpeg,输入Mat对象仅支持PKG_BGR_U8或GRAY_U8

返回true表示运行成功,false则表示运行失败

参数 类型 说明
file_name const char* 待写入文件名
img CMat* 输出图像数据
quality int 图像压缩质量,值范围[0~100]

fcvImdecode

声明文件: modules/imgcodecs/interface/imgcodecs_c.h

CMat* fcvImdecode(
        unsigned char* buf,
        uint64_t size,
        int flags);

说明: 对输入标准JPEG或PNG数据,进行解码,返回Mat对象(仅支持PKG_BGR_U8或GRAY_U8)

返回对象非空表示运行成功,为空则表示运行失败

参数 类型 说明
buf const uint8_t* 原始数据地址
size uint64_t 原始数据长度
flags int 保留字段,可忽略

fcvImencode

声明文件: modules/imgcodecs/interface/imgcodecs_c.h

int fcvImencode(
        const char* ext,
        CMat* img,
        unsigned char** buf,
        uint64_t* buf_size,
        int quality);

说明: 将指定Mat对象编码为标准JPEG或PNG格式数据,通过ext后缀进行格式指定,输入Mat对象仅支持PKG_BGR_U8或GRAY_U8

返回true表示运行成功,false则表示运行失败

参数 类型 说明
ext const char* ext 编码格式后缀,.jpg.jpeg表明为JPEG编码,.png表明为PNG编码
img CMat* 输出图像数据地址
buf uint64_t* 结果数据
quality int 图像压缩质量,值范围[0~100](注:仅影响JPEG格式编码)

Clone this wiki locally