code_app/modules/imgproc/HGImgProc.h

323 lines
12 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __HGIMGPROC_H__
#define __HGIMGPROC_H__
#include "../base/HGDef.h"
#include "../base/HGBaseErr.h"
#include "HGImgProcErr.h"
#include "../base/HGImage.h"
/* 最近邻插值 */
#define HGIMGPROC_INTERPOTYPE_NN 1L
/* 双线性插值 */
#define HGIMGPROC_INTERPOTYPE_LINEAR 2L
/* 线条类型-实线 */
#define HGIMGPROC_LINETYPE_SOLID 1L
/* 线条类型-虚线 */
#define HGIMGPROC_LINETYPE_DASH 2L
/* 水印位置-左侧 */
#define HGIMGPROC_WMPOSTYPE_LEFT 1L
/* 水印位置-上侧 */
#define HGIMGPROC_WMPOSTYPE_TOP 2L
/* 水印位置-右侧 */
#define HGIMGPROC_WMPOSTYPE_RIGHT 3L
/* 水印位置-下侧 */
#define HGIMGPROC_WMPOSTYPE_BOTTOM 4L
/* 水印位置-左上 */
#define HGIMGPROC_WMPOSTYPE_LEFTTOP 5L
/* 水印位置-右上 */
#define HGIMGPROC_WMPOSTYPE_RIGHTTOP 6L
/* 水印位置-左下 */
#define HGIMGPROC_WMPOSTYPE_LEFTBOTTOM 7L
/* 水印位置-右下 */
#define HGIMGPROC_WMPOSTYPE_RIGHTBOTTOM 8L
/* 水印位置-中间 */
#define HGIMGPROC_WMPOSTYPE_CENTER 9L
/* 水印位置-自定义 */
#define HGIMGPROC_WMPOSTYPE_LOCATION 10L
/* 传统二值化 */
#define HGIMGPROC_THRESHTYPE_BINARY 1L
/* 大津法 */
#define HGIMGPROC_THRESHTYPE_OTSU 2L
/* 高斯局部自适应阈值 */
#define HGIMGPROC_THRESHTYPE_ADAPTIVE_GAUSSIAN 3L
/* 均值局部自适应阈值 */
#define HGIMGPROC_THRESHTYPE_ADAPTIVE_MEAN 4L
/* 错误扩散 */
#define HGIMGPROC_THRESHTYPE_ERROR_DIFFUSION 5L
/* 红色通道 */
#define HGIMGPROC_CHANNELTYPE_RED 1L
/* 绿色通道 */
#define HGIMGPROC_CHANNELTYPE_GREEN 2L
/* 蓝色通道 */
#define HGIMGPROC_CHANNELTYPE_BLUE 3L
/* 去除所有HSV色彩结构中S大于80的色彩 */
#define HGIMGPROC_CHANNELTYPE_ALL 4L
/* 无效 */
#define HGIMGPROC_CHANNELTYPE_INVALID 5L
/* 绿蓝色通道混合 */
#define HGIMGPROC_CHANNELTYPE_EXCEPT_RED 6L
/* 红蓝色通道混合 */
#define HGIMGPROC_CHANNELTYPE_EXCEPT_GREEN 7L
/* 红绿色通道混合 */
#define HGIMGPROC_CHANNELTYPE_EXCEPT_BLUE 8L
/* 彩色 */
#define HGIMGPROC_COLORTYPE_COLOR 1L
/* 灰度 */
#define HGIMGPROC_COLORTYPE_GRAY 2L
/* 黑白 */
#define HGIMGPROC_COLORTYPE_BINARY 3L
/* 锐化 */
#define HGIMGPROC_FILTERTYPE_SHARPEN 1L
/* 进一步锐化 */
#define HGIMGPROC_FILTERTYPE_SHARPEN_MORE 2L
/* 模糊 */
#define HGIMGPROC_FILTERTYPE_AVERBLUR 3L
/* 进一步模糊 */
#define HGIMGPROC_FILTERTYPE_AVERBLUR_MORE 4L
/* 双边滤波--背景平滑减少复杂背景的色彩数量利于jpg等压缩比例 */
#define HGIMGPROC_FILTERTYPE_BILATERALFILTER 5L
/* 高斯模糊 */
#define HGIMGPROC_FILTERTYPE_GAUSSIANBLUR 6L
/* 5 * 5提亮锐化 */
#define HGIMGPROC_FILTERTYPE_BRIGHTSHARP 7L
/* 默认,无任何除色效果 */
#define HGIMGPROC_CORRECTOPTION_DEFAULT 1L
/* 除掉低饱和度像素 */
#define HGIMGPROC_CORRECTOPTION_LOWSATURATION_REMOVAL 2L
/* 除掉红色。红色定义H:[0, 85][170, 255],S:[10, 255],V:[120,255] */
#define HGIMGPROC_CORRECTOPTION_RED_REMOVAL 3L
/* 自动裁剪参数 */
typedef struct
{
HGBool convex; /* 黑底填充时的填充方式, HGTRUE为凸多边形填充HGFALSE为凹多边形填充默认HGTRUE */
HGBool fillColor; /* 黑底填充时采用自适应色彩填充HGFALSE为白色填充HGTRUE为自适应文稿底色填充默认HGFALSE */
HGDouble threshold; /* 二值化阈值,取值范围(0, 255)默认40 */
HGInt noise; /* 除噪像素能够消除noise宽度的背景竖条纹干扰默认8 */
HGInt indent; /* 轮廓缩进裁剪、纠偏或者黑底填充时对探索到的纸张轮廓进行缩进indent像素默认5 */
HGBool normalCrop; /* crop deskew fillBlank失效固定裁切采用最传统的裁切方式默认HGFALSE */
HGBool dispersion; /* 是否除色散默认HGTRUE */
}HGImgAutoCropParam;
/* 白底检查参数 */
typedef struct
{
HGDouble threshold; /* 默认40 */
HGInt edge; /* 默认150 */
HGInt blockSize; /* 默认10 */
HGDouble devTh; /* 默认50 */
HGDouble meanTh; /* 默认200 */
}HGImgBlankCheckParam;
/* 水印字体参数 */
typedef struct
{
HGChar foneName[64]; /* 字体名, windows上为GBK编码, linux上为UTF8编码, 默认宋体 */
HGUInt fontSize; /* 字号, 默认20 */
HGBool bold; /* 是否粗体, 默认HGFALSE */
HGBool underline; /* 是否有下划线, 默认HGFALSE */
HGBool italic; /* 是否斜体, 默认HGFALSE */
HGBool strikeout; /* 是否有删除线, 默认HGFALSE */
}HGImgWatermarkFontParam;
/* 去底色参数 */
typedef struct
{
HGInt threshold; /* 默认100 */
HGInt offset; /* 默认0 */
HGInt range; /* 默认40 */
}HGImgFaceBkColorParam;
/* 图像缩放
* 参数:
* 1) image: in, 源图像句柄
* 2) destImage: in, 目标图像句柄
* 3) interpolation: in, 插值方式, 参见HGIMGPROC_INTERPOTYPE_*
* 说明:
* 1) 操作的只是图像的ROI区域
* 2) 源图像和目标图像的type必须一样
* 3) 自动处理origon不一致的情况
* 4) image和destImage不能是同一个句柄
*/
HGEXPORT HGResult HGAPI HGImgProc_ResizeImage(HGImage image, HGImage destImage, HGUInt interp);
/*
* 图像色彩调整
* 1) image: in, 源图像句柄
* 2) destImage: in, 目标图像句柄
* 3) brightness: in, 亮度增加值, -255至255之间
* 4) contrast: in, 对比度增加值, -127至127之间
* 5) gamma: 伽马增加值, 0.1至5.0之间
* 说明:
* 1) 操作的只是图像的ROI区域, ROI区域的大小必须一致
* 2) 源图像和目标图像的type必须一样
* 3) 自动处理origon不一致的情况
* 4) image和destImage可以是同一个句柄
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageAdjustColors(HGImage image, HGImage destImage,
HGInt brightness, HGInt contrast, HGFloat gamma);
/*
* 图像自动裁剪
* 1) image: in, 图像句柄
* 2) autoCrop: in, 是否自动裁剪, 为HGTRUE则忽略destWidth和destHeight
* 3) deskew: in, 是否纠偏
* 4) fillBlank: in, 是否进行黑底填充
* 5) param: in, 参数, 为NULL时使用默认参数
* 6) destWidth: in, 目标图像宽度
* 7) destHeight: in, 目标图像高度
* 8) destType: in, 目标图像类型, 0表示和image一样
* 9) destOrigin: in, 目标图像数据排列方式, 0表示和image一样
* 10) destImage: out, 输出的目标图像句柄, 不用的时候需要调用HGBase_DestroyImage销毁
* 说明:
* 1) 操作的只是image的ROI区域
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageAutoCrop(HGImage image, HGBool autoCrop, HGBool deskew, HGBool fillBlank, const HGImgAutoCropParam* param,
HGUInt destWidth, HGUInt destHeight, HGUInt destType, HGUInt destOrigin, HGImage* destImage);
/* 判断图像是否是空白
* 1) image: in, 图像句柄
* 2) param: in, 参数, 为NULL时使用默认参数
* 3) blank: out, HGTRUE为空白图像, HGFALSE为非空白图像
* 说明:
* 1) 操作的只是image的ROI区域
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageBlankCheck(HGImage image, const HGImgBlankCheckParam *param, HGBool *blank);
/* 图像画线
* 1) image: in, 图像句柄
* 2) x1: in, 第一个点x坐标
* 3) y1: in, 第一个点y坐标
* 4) x2: in, 第二个点x坐标
* 5) y2: in, 第二个点y坐标
* 6) color: in, 颜色
* 7) width: in, 线宽
* 8) type: in, 表示线类型, 参见HGIMGPROC_LINETYPE_*
* 说明:
* 1) 操作的只是图像的ROI区域
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageDrawLine(HGImage image, HGInt x1, HGInt y1, HGInt x2, HGInt y2,
HGColor color, HGUInt width, HGUInt type);
/* 添加图像水印
* 1) image: in, 图像句柄
* 2) text: 水印文本, windows上为GBK编码, linux上为UTF8编码
* 3) color: 颜色
* 4) posType: 位置, 见HGIMGPROC_WMPOSTYPE_*
* 5) locationX: 当posType为HGIMGPROC_WMPOSTYPE_LOCATION时表示x坐标
* 6) locationY: 当posType为HGIMGPROC_WMPOSTYPE_LOCATION时表示y坐标
* 7) fontParam: 字体参数, 为NULL时使用默认参数
* 说明:
* 1) 操作的只是图像的ROI区域
*/
HGEXPORT HGResult HGAPI HGImgProc_AddImageWatermark(HGImage image, const HGChar *text, HGColor color, HGUInt posType,
HGInt locationX, HGInt locationY, const HGImgWatermarkFontParam *fontParam);
/* 图像二值化
* 1) image: in, 源图像句柄
* 2) destImage: in, 目标图像句柄
* 3) thresholdType: in, 二值化类型参见HGIMGPROC_THRESHTYPE_*
* 4) threshold: in, 阈值, 当选择HGIMGPROC_THRESHTYPE_OTSU时无效, 默认120
* 5) blockSize: in, HGIMGPROC_THRESHTYPE_ADAPTIVE_GAUSSIAN和HGIMGPROC_THRESHTYPE_ADAPTIVE_MEAN模式有效表示局部观察块的宽度, 默认51
* 6) constant: in, HGIMGPROC_THRESHTYPE_ADAPTIVE_GAUSSIAN和HGIMGPROC_THRESHTYPE_ADAPTIVE_MEAN模式有效与blockSize形成比例关系作为局部筛选阈值, 默认41
* 说明:
* 1) 操作的只是图像的ROI区域, ROI区域的大小必须一致
* 2) 源图像和目标图像的type必须一样
* 3) 自动处理origon不一致的情况
* 4) image和destImage可以是同一个句柄
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageBinarization(HGImage image, HGImage destImage, HGUInt thresholdType,
HGInt threshold, HGInt blockSize, HGInt constant);
/* 通道提取, 又名除色
* 1) image: in, 源图像句柄
* 2) destImage: in, 目标图像句柄
* 3) channelType: in, 通道类型, 参见HGIMGPROC_CHANNELTYPE_*
* 说明:
* 1) 操作的只是图像的ROI区域, ROI区域的大小必须一致
* 2) 源图像和目标图像的type可以不一样
* 3) 自动处理origon不一致的情况
* 4) image和destImage可以是同一个句柄
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageExtractChannel(HGImage image, HGImage destImage, HGUInt channelType);
/* 图像色彩识别
* 1) image: in, 源图像句柄
* 2) colorType: out, 图像色彩类型, 参见HGIMGPROC_COLORTYPE_*
* 说明:
* 1) 操作的只是image的ROI区域
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageColorRecognition(HGImage image, HGUInt *colorType);
/* 图像除色散
* 1) image: in, 源图像句柄
* 2) destImage: in, 目标图像句柄
* 说明:
* 1) 操作的只是图像的ROI区域, ROI区域的大小必须一致
* 2) 源图像和目标图像的type必须一样
* 3) 自动处理origon不一致的情况
* 4) image和destImage可以是同一个句柄
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageDispersion(HGImage image, HGImage destImage);
/* 消除文稿纸张底色
* 1) image: in, 源图像句柄
* 2) destImage: in, 目标图像句柄
* 3) param: in, 参数, 为NULL时使用默认参数
* 说明:
* 1) 操作的只是图像的ROI区域, ROI区域的大小必须一致
* 2) 源图像和目标图像的type必须一样
* 3) 自动处理origon不一致的情况
* 4) image和destImage可以是同一个句柄
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageFadeBkColor(HGImage image, HGImage destImage, const HGImgFaceBkColorParam *param);
/* 图像滤镜
* 1) image: in, 源图像句柄
* 2) destImage: in, 目标图像句柄
* 3) filterType: in, 滤镜类型, 参见HGIMGPROC_FILTERTYPE_*
* 4) kSize: in, 默认30, HGIMGPROC_FILTERTYPE_GAUSSIANBLUR时须为正奇数
* 说明:
* 1) 操作的只是图像的ROI区域, ROI区域的大小必须一致
* 2) 源图像和目标图像的type必须一样
* 3) 自动处理origon不一致的情况
* 4) image和destImage可以是同一个句柄
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageFilter(HGImage image, HGImage destImage, HGUInt filterType, HGInt kSize);
/* 装订孔填充
* 1) image1: in, 源图像句柄1
* 2) image2: in, 源图像句柄2
* 3) borderSize: in, 孔洞面积阈值
* 4) edgeScale: in, 纸张边缘区域比例,取值范围(0,0.5),默认值0.1
* 5) threshold: in, 二值化阈值
* 说明:
* 1) 操作的只是图像的ROI区域, ROI区域的大小必须一致
* 2) image1和image2的type必须一致
* 3) image1和image2的origin必须一致
* 3) image1和image2不能是同一个句柄
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageOutHole(HGImage image1, HGImage image2, HGFloat borderSize, HGFloat edgeScale, HGDouble threshold);
/* 色彩校正
* 1) image: in, 源图像句柄
* 2) destImage: in, 目标图像句柄
* 3) correctOption: in, 预设初色模式, 参见HGIMGPROC_CORRECTOPTION_*
* 4) cvtGray: in, 替代像素使用默认值还是使用灰度值。HGTRUE为灰度值HGFALSE为默认值
* 5) color: in, 颜色, 当cvtGray为HGFALSE时生效
* 说明:
* 1) 操作的只是图像的ROI区域, ROI区域的大小必须一致
* 2) 源图像和目标图像的type必须一样
* 3) 自动处理origon不一致的情况
* 4) image和destImage可以是同一个句柄
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageHSVCorrect(HGImage image, HGImage destImage, HGUInt correctOption, HGBool cvtGray, HGColor color);
#endif /* __HGIMGPROC_H__ */