code_app/modules/imgproc/HGImgProc.h

323 lines
12 KiB
C
Raw Normal View History

2022-05-03 10:25:52 +00:00
#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
2022-06-15 01:50:21 +00:00
/* 线条类型-实线 */
#define HGIMGPROC_LINETYPE_SOLID 1L
/* 线条类型-虚线 */
#define HGIMGPROC_LINETYPE_DASH 2L
/* 水印位置-左侧 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_LEFT 1L
2022-06-15 01:50:21 +00:00
/* 水印位置-上侧 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_TOP 2L
2022-06-15 01:50:21 +00:00
/* 水印位置-右侧 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_RIGHT 3L
2022-06-15 01:50:21 +00:00
/* 水印位置-下侧 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_BOTTOM 4L
2022-06-15 01:50:21 +00:00
/* 水印位置-左上 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_LEFTTOP 5L
2022-06-15 01:50:21 +00:00
/* 水印位置-右上 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_RIGHTTOP 6L
2022-06-15 01:50:21 +00:00
/* 水印位置-左下 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_LEFTBOTTOM 7L
2022-06-15 01:50:21 +00:00
/* 水印位置-右下 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_RIGHTBOTTOM 8L
2022-06-15 01:50:21 +00:00
/* 水印位置-中间 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_CENTER 9L
2022-06-15 01:50:21 +00:00
/* 水印位置-自定义 */
2022-06-13 11:56:43 +00:00
#define HGIMGPROC_WMPOSTYPE_LOCATION 10L
2022-06-18 02:32:32 +00:00
/* 传统二值化 */
#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
2022-06-20 06:18:21 +00:00
/* 默认,无任何除色效果 */
#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
/* 自动裁剪参数 */
2022-05-03 10:25:52 +00:00
typedef struct
{
2022-06-20 06:18:21 +00:00
HGBool convex; /* 黑底填充时的填充方式, HGTRUE为凸多边形填充HGFALSE为凹多边形填充默认HGTRUE */
HGBool fillColor; /* 黑底填充时采用自适应色彩填充HGFALSE为白色填充HGTRUE为自适应文稿底色填充默认HGFALSE */
HGDouble threshold; /* 二值化阈值,取值范围(0, 255)默认40 */
HGInt noise; /* 除噪像素能够消除noise宽度的背景竖条纹干扰默认8 */
HGInt indent; /* 轮廓缩进裁剪、纠偏或者黑底填充时对探索到的纸张轮廓进行缩进indent像素默认5 */
2022-06-20 06:18:21 +00:00
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;
2022-05-03 10:25:52 +00:00
2022-06-13 11:56:43 +00:00
/* 水印字体参数 */
typedef struct
{
2022-06-20 03:06:18 +00:00
HGChar foneName[64]; /* 字体名, windows上为GBK编码, linux上为UTF8编码, 默认宋体 */
HGUInt fontSize; /* 字号, 默认20 */
HGBool bold; /* 是否粗体, 默认HGFALSE */
HGBool underline; /* 是否有下划线, 默认HGFALSE */
HGBool italic; /* 是否斜体, 默认HGFALSE */
HGBool strikeout; /* 是否有删除线, 默认HGFALSE */
2022-06-13 11:56:43 +00:00
}HGImgWatermarkFontParam;
/* 去底色参数 */
typedef struct
{
HGInt threshold; /* 默认100 */
HGInt offset; /* 默认0 */
HGInt range; /* 默认40 */
}HGImgFaceBkColorParam;
2022-05-03 10:25:52 +00:00
/* 图像缩放
* :
* 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, , -255255
* 4) contrast: in, , -127127
* 5) gamma: , 0.15.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);
/*
*
2022-05-03 10:25:52 +00:00
* 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,
2022-05-26 11:01:38 +00:00
* 8) destType: in, , 0image一样
* 9) destOrigin: in, , 0image一样
* 10) destImage: out, , HGBase_DestroyImage销毁
* :
2022-05-03 10:25:52 +00:00
* 1) image的ROI区域
*/
HGEXPORT HGResult HGAPI HGImgProc_ImageAutoCrop(HGImage image, HGBool autoCrop, HGBool deskew, HGBool fillBlank, const HGImgAutoCropParam* param,
2022-05-03 10:25:52 +00:00
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);
2022-06-15 01:50:21 +00:00
/* 图像画线
* 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区域
2022-06-14 09:06:19 +00:00
*/
2022-06-15 01:50:21 +00:00
HGEXPORT HGResult HGAPI HGImgProc_ImageDrawLine(HGImage image, HGInt x1, HGInt y1, HGInt x2, HGInt y2,
HGColor color, HGUInt width, HGUInt type);
2022-06-14 09:06:19 +00:00
2022-06-13 11:56:43 +00:00
/* 添加图像水印
* 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);
2022-06-18 02:32:32 +00:00
/* 图像二值化
* 1) image: in,
* 2) destImage: in,
* 3) thresholdType: in, HGIMGPROC_THRESHTYPE_*
2022-06-20 03:06:18 +00:00
* 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可以是同一个句柄
2022-06-18 02:32:32 +00:00
*/
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_*
2022-06-20 03:06:18 +00:00
* 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);
2022-06-20 03:06:18 +00:00
/* 装订孔填充
* 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);
2022-06-20 06:18:21 +00:00
/* 色彩校正
* 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);
2022-05-03 10:25:52 +00:00
#endif /* __HGIMGPROC_H__ */