code_app/modules/imgproc/HGImgProc.h

218 lines
7.7 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_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__ */