218 lines
7.7 KiB
C
218 lines
7.7 KiB
C
#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_DECOTYPE_INSIDE 1L
|
||
/* 外部去污 */
|
||
#define HGIMGPROC_DECOTYPE_OUTSIDE 2L
|
||
|
||
#pragma pack(push)
|
||
#pragma pack(4)
|
||
|
||
/* 自动裁剪参数 */
|
||
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;
|
||
|
||
#pragma pack(pop)
|
||
|
||
/* 图像缩放
|
||
* 参数:
|
||
* 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);
|
||
|
||
/* 二值化
|
||
*/
|
||
HGEXPORT HGResult HGAPI HGImgProc_ImageBinarization(HGImage image, HGImage destImage, HGUInt thresholdType,
|
||
HGInt threshold, HGInt blockSize, HGInt constant);
|
||
|
||
/* 消除文稿纸张底色
|
||
* 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) decoType: in, 去污类型, 参见HGIMGPROC_DECOTYPE_*
|
||
* 4) x: in, 选择区域的x坐标
|
||
* 5) y: in, 选择区域的y坐标
|
||
* 6) width: in, 选择区域的宽
|
||
* 7) height: in, 选择区域的高
|
||
* 说明:
|
||
* 1) 操作的只是图像的ROI区域, ROI区域的大小必须一致
|
||
* 2) 源图像和目标图像的type必须一样
|
||
* 3) 自动处理origon不一致的情况
|
||
* 4) image和destImage可以是同一个句柄
|
||
*/
|
||
HGEXPORT HGResult HGAPI HGImgProc_ImageDecontamination(HGImage image, HGImage destImage, HGUInt decoType, HGUInt x, HGUInt y,
|
||
HGUInt width, HGUInt height, HGColor color);
|
||
|
||
#endif /* __HGIMGPROC_H__ */
|