#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__ */