Merge branch 'master' of http://192.168.100.140:8099/sane/code_app
This commit is contained in:
commit
00e1cb9eaf
|
@ -799,12 +799,13 @@ namespace ver_2
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ManagerV2::LocalImageDeskew(const std::string& imagePath, bool temp, std::string& outImagePath, std::string& errInfo)
|
int ManagerV2::LocalImageDeskew(const std::string& imagePath, bool autoCrop, bool deskew, bool fillBlank, int width, int height,
|
||||||
|
bool temp, std::string& outImagePath, std::string& errInfo)
|
||||||
{
|
{
|
||||||
outImagePath.clear();
|
outImagePath.clear();
|
||||||
errInfo = "错误";
|
errInfo = "错误";
|
||||||
|
|
||||||
if (imagePath.empty())
|
if (imagePath.empty() || width <= 0 || height <= 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
@ -813,7 +814,8 @@ namespace ver_2
|
||||||
if (NULL != image)
|
if (NULL != image)
|
||||||
{
|
{
|
||||||
HGImage img = NULL;
|
HGImage img = NULL;
|
||||||
HGImgProc_ImageAutoCrop(image, HGTRUE, HGTRUE, HGTRUE, NULL, 0, 0, 0, HGBASE_IMGORIGIN_TOP, &img);
|
HGImgProc_ImageAutoCrop(image, (HGBool)autoCrop, (HGBool)deskew, (HGBool)fillBlank, NULL,
|
||||||
|
(HGUInt)width, (HGUInt)height, 0, HGBASE_IMGORIGIN_TOP, &img);
|
||||||
if (NULL != img)
|
if (NULL != img)
|
||||||
{
|
{
|
||||||
if (0 == SaveImage(img, temp, outImagePath))
|
if (0 == SaveImage(img, temp, outImagePath))
|
||||||
|
@ -1075,6 +1077,76 @@ namespace ver_2
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ManagerV2::LocalImageDirectionCorrect(const std::string& imagePath, bool temp, std::string& outImagePath, std::string& errInfo)
|
||||||
|
{
|
||||||
|
outImagePath.clear();
|
||||||
|
errInfo = "错误";
|
||||||
|
|
||||||
|
if (imagePath.empty())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
int ret = -1;
|
||||||
|
HGImage image = NULL;
|
||||||
|
HGImgFmt_LoadImage(imagePath.c_str(), 0, NULL, 0, HGBASE_IMGORIGIN_TOP, &image);
|
||||||
|
if (NULL != image)
|
||||||
|
{
|
||||||
|
HGImage destImage = NULL;
|
||||||
|
|
||||||
|
HGOCRMgr ocrMgr = NULL;
|
||||||
|
HGImgProc_CreateOCRMgr(&ocrMgr);
|
||||||
|
if (NULL != ocrMgr)
|
||||||
|
{
|
||||||
|
HGImageInfo imgInfo;
|
||||||
|
HGBase_GetImageInfo(image, &imgInfo);
|
||||||
|
|
||||||
|
HGUInt direct = 0;
|
||||||
|
HGImgProc_ImageTextDirectOCR(ocrMgr, image, &direct);
|
||||||
|
if (HGIMGPROC_OCRTEXTDIRECT_RIGHT == direct)
|
||||||
|
{
|
||||||
|
HGBase_CreateImage(imgInfo.height, imgInfo.width, imgInfo.type, imgInfo.origin, &destImage);
|
||||||
|
HGBase_ImageRotateLeft(image, destImage);
|
||||||
|
}
|
||||||
|
else if (HGIMGPROC_OCRTEXTDIRECT_LEFT == direct)
|
||||||
|
{
|
||||||
|
HGBase_CreateImage(imgInfo.height, imgInfo.width, imgInfo.type, imgInfo.origin, &destImage);
|
||||||
|
HGBase_ImageRotateRight(image, destImage);
|
||||||
|
}
|
||||||
|
else if (HGIMGPROC_OCRTEXTDIRECT_180 == direct)
|
||||||
|
{
|
||||||
|
HGBase_CreateImage(imgInfo.width, imgInfo.height, imgInfo.type, imgInfo.origin, &destImage);
|
||||||
|
HGBase_ImageRotate180(image, destImage);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HGBase_CloneImage(image, imgInfo.type, imgInfo.origin, &destImage);
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgProc_DestroyOCRMgr(ocrMgr);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NULL != destImage)
|
||||||
|
{
|
||||||
|
if (0 == SaveImage(destImage, temp, outImagePath))
|
||||||
|
{
|
||||||
|
if (!temp)
|
||||||
|
{
|
||||||
|
m_saveFilePathList.push_back(outImagePath);
|
||||||
|
RestoreSaveFilePathList(m_saveFilePathList);
|
||||||
|
}
|
||||||
|
|
||||||
|
errInfo.clear();
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGBase_DestroyImage(destImage);
|
||||||
|
}
|
||||||
|
|
||||||
|
HGBase_DestroyImage(image);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int ManagerV2::InitDevice(std::string& errInfo)
|
int ManagerV2::InitDevice(std::string& errInfo)
|
||||||
{
|
{
|
||||||
errInfo = "错误";
|
errInfo = "错误";
|
||||||
|
|
|
@ -165,7 +165,8 @@ namespace ver_2
|
||||||
int LocalMakeZipFile(const std::vector<std::string>& filePathList, const std::vector<std::string>& nameList,
|
int LocalMakeZipFile(const std::vector<std::string>& filePathList, const std::vector<std::string>& nameList,
|
||||||
bool temp, std::string& outZipPath, std::string& errInfo);
|
bool temp, std::string& outZipPath, std::string& errInfo);
|
||||||
// 本地图像纠偏
|
// 本地图像纠偏
|
||||||
int LocalImageDeskew(const std::string& imagePath, bool temp, std::string& outImagePath, std::string& errInfo);
|
int LocalImageDeskew(const std::string& imagePath, bool autoCrop, bool deskew, bool fillBlank, int width, int height,
|
||||||
|
bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
// 本地图像添加水印
|
// 本地图像添加水印
|
||||||
int LocalImageAddWatermark(const std::string& imagePath, const std::string& text, const std::string& textColor, int textOpacity, const std::string& textPos,
|
int LocalImageAddWatermark(const std::string& imagePath, const std::string& text, const std::string& textColor, int textOpacity, const std::string& textPos,
|
||||||
int marginLeft, int marginTop, int marginRight, int marginBottom, int locationX, int locationY, const std::string& fontName,
|
int marginLeft, int marginTop, int marginRight, int marginBottom, int locationX, int locationY, const std::string& fontName,
|
||||||
|
@ -173,6 +174,26 @@ namespace ver_2
|
||||||
// 去污
|
// 去污
|
||||||
int LocalImageDecontamination(const std::string& imagePath, const std::string mode, const std::string& color,
|
int LocalImageDecontamination(const std::string& imagePath, const std::string mode, const std::string& color,
|
||||||
int x, int y, int width, int height, bool temp, std::string& outImagePath, std::string& errInfo);
|
int x, int y, int width, int height, bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
|
// 图像方向校正
|
||||||
|
int LocalImageDirectionCorrect(const std::string& imagePath, bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
|
// 二值化
|
||||||
|
//int LocalImageBinarization(const std::string& imagePath, const std::string& type, int threshold, bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
|
// 通道提取
|
||||||
|
//int LocalImageExtractChannel(const std::string& imagePath, const std::string& type, bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
|
// 颜色识别
|
||||||
|
//int LocalImageColorRecognition(const std::string& imagePath, bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
|
// 除色散
|
||||||
|
//int LocalImageDispersion(const std::string& imagePath, bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
|
// 去底色
|
||||||
|
//int LocalImageFadeBkColor(const std::string& imagePath, bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
|
// 图像滤镜
|
||||||
|
//int LocalImageFilter(const std::string& imagePath, const std::string& type, bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
|
// 除穿孔
|
||||||
|
//int LocalImageOutHole(const std::string& imagePath1, const std::string& imagePath2, double borderSize,
|
||||||
|
// bool temp, std::string& outImagePath1, std::string& outImagePath2, std::string& errInfo);
|
||||||
|
// 色彩校正
|
||||||
|
//int ImageHSVCorrect(const std::string& imagePath, const std::string& option, bool cvtGray, const std::string& color,
|
||||||
|
// bool temp, std::string& outImagePath, std::string& errInfo);
|
||||||
|
|
||||||
// 设备初始化
|
// 设备初始化
|
||||||
int InitDevice(std::string& errInfo);
|
int InitDevice(std::string& errInfo);
|
||||||
|
|
|
@ -281,6 +281,10 @@ namespace ver_2
|
||||||
{
|
{
|
||||||
ImageDecontamination(json, func);
|
ImageDecontamination(json, func);
|
||||||
}
|
}
|
||||||
|
else if ("local_image_direction_correct" == func || "base64_image_direction_correct" == func || "image_direction_correct" == func)
|
||||||
|
{
|
||||||
|
ImageDirectionCorrect(json, func);
|
||||||
|
}
|
||||||
else if ("upload_local_file" == func)
|
else if ("upload_local_file" == func)
|
||||||
{
|
{
|
||||||
UploadLocalFile(json);
|
UploadLocalFile(json);
|
||||||
|
@ -1766,7 +1770,7 @@ namespace ver_2
|
||||||
|
|
||||||
std::string outImagePath;
|
std::string outImagePath;
|
||||||
std::string errInfo;
|
std::string errInfo;
|
||||||
int ret = GetManager()->LocalImageDeskew(imagePath, !localSave, outImagePath, errInfo);
|
int ret = GetManager()->LocalImageDeskew(imagePath, true, true, true, 0, 0, !localSave, outImagePath, errInfo);
|
||||||
|
|
||||||
if ("image_deskew" == func || "base64_image_deskew" == func)
|
if ("image_deskew" == func || "base64_image_deskew" == func)
|
||||||
{
|
{
|
||||||
|
@ -2009,6 +2013,84 @@ namespace ver_2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WSUser::ImageDirectionCorrect(cJSON* json, const std::string& func)
|
||||||
|
{
|
||||||
|
assert(NULL != json);
|
||||||
|
|
||||||
|
bool find = false;
|
||||||
|
bool localSave = GetJsonBoolValue(json, "local_save", &find);
|
||||||
|
if (!find)
|
||||||
|
localSave = true;
|
||||||
|
|
||||||
|
std::string imagePath;
|
||||||
|
if ("image_direction_correct" == func)
|
||||||
|
{
|
||||||
|
int imageIndex = GetJsonIntValue(json, "image_index");
|
||||||
|
std::string errInfo2;
|
||||||
|
GetManager()->SaveImage(imageIndex, true, imagePath, errInfo2);
|
||||||
|
}
|
||||||
|
else if ("local_image_direction_correct" == func)
|
||||||
|
{
|
||||||
|
imagePath = Utf8ToStdString(GetJsonStringValue(json, "image_path"));
|
||||||
|
}
|
||||||
|
else if ("base64_image_direction_correct" == func)
|
||||||
|
{
|
||||||
|
std::string imageBase64 = GetJsonStringValue(json, "image_base64");
|
||||||
|
std::string errInfo2;
|
||||||
|
GetManager()->SaveLocalImage(imageBase64, true, imagePath, errInfo2);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string outImagePath;
|
||||||
|
std::string errInfo;
|
||||||
|
int ret = GetManager()->LocalImageDirectionCorrect(imagePath, !localSave, outImagePath, errInfo);
|
||||||
|
|
||||||
|
if ("image_direction_correct" == func || "base64_image_direction_correct" == func)
|
||||||
|
{
|
||||||
|
HGBase_DeleteFile(imagePath.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string outImageBase64;
|
||||||
|
bool getBase64 = GetJsonBoolValue(json, "get_base64");
|
||||||
|
if (0 == ret && getBase64)
|
||||||
|
{
|
||||||
|
std::string errInfo2;
|
||||||
|
GetManager()->LoadLocalImage(outImagePath, outImageBase64, errInfo2);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool findIden = false;
|
||||||
|
std::string iden = GetJsonStringValue(json, "iden", &findIden);
|
||||||
|
|
||||||
|
cJSON* retJson = cJSON_CreateObject();
|
||||||
|
if (NULL != retJson)
|
||||||
|
{
|
||||||
|
cJSON_AddItemToObject(retJson, "func", cJSON_CreateString(func.c_str()));
|
||||||
|
if (findIden)
|
||||||
|
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str()));
|
||||||
|
cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret));
|
||||||
|
if (0 != ret)
|
||||||
|
cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str()));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (localSave)
|
||||||
|
cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(outImagePath).c_str()));
|
||||||
|
else
|
||||||
|
HGBase_DeleteFile(outImagePath.c_str());
|
||||||
|
|
||||||
|
if (getBase64)
|
||||||
|
cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(outImageBase64.c_str()));
|
||||||
|
}
|
||||||
|
|
||||||
|
char* resp = cJSON_Print(retJson);
|
||||||
|
if (NULL != resp)
|
||||||
|
{
|
||||||
|
SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE);
|
||||||
|
free(resp);
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON_Delete(retJson);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void WSUser::InitDevice(cJSON* json)
|
void WSUser::InitDevice(cJSON* json)
|
||||||
{
|
{
|
||||||
assert(NULL != json);
|
assert(NULL != json);
|
||||||
|
|
|
@ -47,6 +47,7 @@ namespace ver_2
|
||||||
void ImageDeskew(cJSON* json, const std::string& func);
|
void ImageDeskew(cJSON* json, const std::string& func);
|
||||||
void ImageAddWatermark(cJSON* json, const std::string& func);
|
void ImageAddWatermark(cJSON* json, const std::string& func);
|
||||||
void ImageDecontamination(cJSON* json, const std::string& func);
|
void ImageDecontamination(cJSON* json, const std::string& func);
|
||||||
|
void ImageDirectionCorrect(cJSON* json, const std::string& func);
|
||||||
|
|
||||||
void InitDevice(cJSON* json);
|
void InitDevice(cJSON* json);
|
||||||
void DeinitDevice(cJSON* json);
|
void DeinitDevice(cJSON* json);
|
||||||
|
|
|
@ -90,6 +90,12 @@
|
||||||
myCanvas.src = message['image_base64'];
|
myCanvas.src = message['image_base64'];
|
||||||
alert(msg.data);
|
alert(msg.data);
|
||||||
}
|
}
|
||||||
|
else if ("local_image_direction_correct" == message['func'])
|
||||||
|
{
|
||||||
|
var myCanvas = document.getElementById("myCanvas");
|
||||||
|
myCanvas.src = message['image_base64'];
|
||||||
|
alert(msg.data);
|
||||||
|
}
|
||||||
else if ("init_device" == message['func'])
|
else if ("init_device" == message['func'])
|
||||||
{
|
{
|
||||||
alert(msg.data);
|
alert(msg.data);
|
||||||
|
@ -299,6 +305,12 @@
|
||||||
myCanvas.src = message['image_base64'];
|
myCanvas.src = message['image_base64'];
|
||||||
alert(msg.data);
|
alert(msg.data);
|
||||||
}
|
}
|
||||||
|
else if ("image_direction_correct" == message['func'])
|
||||||
|
{
|
||||||
|
var myCanvas = document.getElementById("myCanvas");
|
||||||
|
myCanvas.src = message['image_base64'];
|
||||||
|
alert(msg.data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -442,6 +454,16 @@
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function LocalImageDirectCorrect()
|
||||||
|
{
|
||||||
|
socket.send(JSON.stringify({
|
||||||
|
'func':'local_image_direction_correct',
|
||||||
|
'image_path':'D:\\1.jpg',
|
||||||
|
'local_save':false,
|
||||||
|
'get_base64':true
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
function InitDevice()
|
function InitDevice()
|
||||||
{
|
{
|
||||||
socket.send(JSON.stringify({
|
socket.send(JSON.stringify({
|
||||||
|
@ -767,6 +789,16 @@
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ImageDirectCorrect()
|
||||||
|
{
|
||||||
|
socket.send(JSON.stringify({
|
||||||
|
'func':'image_direction_correct',
|
||||||
|
'image_index':0,
|
||||||
|
'local_save':false,
|
||||||
|
'get_base64':true
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
window.onload = function()
|
window.onload = function()
|
||||||
{
|
{
|
||||||
var myimg = document.getElementById("myCanvas");
|
var myimg = document.getElementById("myCanvas");
|
||||||
|
@ -808,6 +840,7 @@
|
||||||
<input type="button" value="本地图像纠偏" onclick="LocalImageDeskew()" />
|
<input type="button" value="本地图像纠偏" onclick="LocalImageDeskew()" />
|
||||||
<input type="button" value="本地图像添加水印" onclick="LocalImageAddWatermark()" />
|
<input type="button" value="本地图像添加水印" onclick="LocalImageAddWatermark()" />
|
||||||
<input type="button" value="本地图像去污" onclick="LocalImageDecontamination()" />
|
<input type="button" value="本地图像去污" onclick="LocalImageDecontamination()" />
|
||||||
|
<input type="button" value="本地图像方向校正" onclick="LocalImageDirectCorrect()" />
|
||||||
|
|
||||||
<input type="button" value="初始化设备" onclick="InitDevice()" />
|
<input type="button" value="初始化设备" onclick="InitDevice()" />
|
||||||
<input type="button" value="反初始化设备" onclick="DeinitDevice()" />
|
<input type="button" value="反初始化设备" onclick="DeinitDevice()" />
|
||||||
|
@ -848,6 +881,7 @@
|
||||||
<input type="button" value="图像纠偏" onclick="ImageDeskew()" />
|
<input type="button" value="图像纠偏" onclick="ImageDeskew()" />
|
||||||
<input type="button" value="图像添加水印" onclick="ImageAddWatermark()" />
|
<input type="button" value="图像添加水印" onclick="ImageAddWatermark()" />
|
||||||
<input type="button" value="图像去污" onclick="ImageDecontamination()" />
|
<input type="button" value="图像去污" onclick="ImageDecontamination()" />
|
||||||
|
<input type="button" value="图像方向校正" onclick="ImageDirectCorrect()" />
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<img id="myCanvas" width='640' height='480' style="background-color: black; float: left;"/>
|
<img id="myCanvas" width='640' height='480' style="background-color: black; float: left;"/>
|
||||||
|
|
Loading…
Reference in New Issue