添加四个方位除穿孔与设备通信参数

This commit is contained in:
gb 2022-09-12 12:27:25 +08:00
parent 9cb085f88b
commit 934c94030a
10 changed files with 41 additions and 4 deletions

View File

@ -835,6 +835,10 @@ typedef struct _scan_conf
bool fadeback; /**< 背景除色>*/
int fadebackrange;
bool isuoloadexceptionimage; /**< 是否保留双张出图>*/
int fillholeratio_up; // 上侧除穿孔比率0为不除。[050]added on 2022-09-12
int fillholeratio_down; // 下侧除穿孔比率0为不除。[050]added on 2022-09-12
int fillholeratio_left; // 左侧除穿孔比率0为不除。[050]added on 2022-09-12
int fillholeratio_right; // 右侧除穿孔比率0为不除。[050]added on 2022-09-12
uint32_t reserve[1024]; /**< 预留4096字节做协议扩展*/
}SCANCONF ,*LPSCANCONF;

View File

@ -89,7 +89,7 @@ hg_scanner::hg_scanner(ScannerSerial serial
, const char* dev_name, usb_io* io)
: name_(dev_name ? dev_name : ""), io_(io), status_(SCANNER_ERR_NOT_START)
, scan_count_(-1), run_(true), paper_size_(TwSS::A4), erase_bkg_range_(10)
, noise_range_(30), omit_empty_level_(50), resolution_(200), rid_hole_range_(.1f)
, noise_range_(30), omit_empty_level_(50), resolution_(200), rid_hole_range_(10.0f)
, bright_(128), contrast_(4), gamma_(1.0f), threshold_(40), anti_noise_(8), margin_(5)
, fractate_level_(50), ui_ev_cb_(ui_default_callback), scan_life_(NULL)
, notify_setting_result_(false), user_cancel_(false), cb_mem_(true), test_1_paper_(false)
@ -2354,6 +2354,29 @@ int hg_scanner::save_final_image(hg_imgproc::LPIMGHEAD head, void* buf)
else
return SCANNER_ERR_INSUFFICIENT_MEMORY;
}
void hg_scanner::adjust_filling_hole(LPSCANCONF conf)
{
int maxval = 0;
#define SET_FILL_HOLE(member, me) \
conf->fillholeratio_##member = isremove_##me##_hole ? isremove_##me##_hole_threshold * 100 + .5f : 0; \
if(conf->fillholeratio_##member < 0) \
conf->fillholeratio_##member = 0; \
else if(conf->fillholeratio_##member > 50) \
conf->fillholeratio_##member = 50; \
if(maxval < conf->fillholeratio_##member) \
maxval = conf->fillholeratio_##member;
SET_FILL_HOLE(up, top);
SET_FILL_HOLE(down, low);
SET_FILL_HOLE(left, left);
SET_FILL_HOLE(right, right);
if (maxval)
{
conf->fillhole.is_fillhole = true;
conf->fillhole.fillholeratio = maxval;
}
}
int hg_scanner::is_running(void)
{
if (!scan_life_)

View File

@ -198,11 +198,12 @@ protected:
protected:
volatile bool run_;
volatile bool user_cancel_;
platform_event wait_usb_;
platform_event wait_img_;
platform_event wait_usb_result_;
platform_event wait_usb_;
platform_event wait_img_;
platform_event wait_usb_result_;
usb_io* io_;
std::mutex io_lock_;
std::string firmware_ver_;
bool online_;
int status_;
bool async_io_;
@ -274,6 +275,8 @@ protected:
int save_usb_data(std::shared_ptr<tiny_buffer> data);
int save_final_image(hg_imgproc::LPIMGHEAD head, void* buf);
void adjust_filling_hole(LPSCANCONF conf);
enum thread_running
{
THREAD_RUNNING_IDLE = 0,

View File

@ -1020,6 +1020,7 @@ else
ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole;
ic.fillhole.fillholeratio = rid_hole_range_;
adjust_filling_hole(&ic);
ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize;
ic.detachnoise.detachnoise = noise_range_;

View File

@ -926,6 +926,7 @@ int hg_scanner_239::writedown_image_configuration(void)
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole;
ic.fillhole.fillholeratio = rid_hole_range_;
adjust_filling_hole(&ic);
ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize;
ic.detachnoise.detachnoise = noise_range_;
ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 :0;

View File

@ -946,6 +946,7 @@ void hg_scanner_300::writedown_image_configuration(void)
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole;
ic.fillhole.fillholeratio = rid_hole_range_;
adjust_filling_hole(&ic);
ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize;
ic.detachnoise.detachnoise = noise_range_;
ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 :0;

View File

@ -1023,6 +1023,7 @@ int hg_scanner_302::writedown_image_configuration(void)
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole;
ic.fillhole.fillholeratio = rid_hole_range_;
adjust_filling_hole(&ic);
ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize;
ic.detachnoise.detachnoise = noise_range_;
ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 :0;

View File

@ -955,6 +955,7 @@ void hg_scanner_400::writedown_image_configuration(void)
ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole;
ic.fillhole.fillholeratio = rid_hole_range_;
adjust_filling_hole(&ic);
ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize;
ic.detachnoise.detachnoise = noise_range_;

View File

@ -1028,6 +1028,7 @@ int hg_scanner_402::writedown_image_configuration(void)
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole;
ic.fillhole.fillholeratio = rid_hole_range_;
adjust_filling_hole(&ic);
ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize;
ic.detachnoise.detachnoise = noise_range_;
ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 :0;

View File

@ -898,6 +898,7 @@ int hg_scanner_439::writedown_image_configuration(void)
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
ic.fillhole.is_fillhole = image_prc_param_.bits.rid_hole;
ic.fillhole.fillholeratio = rid_hole_range_;
adjust_filling_hole(&ic);
ic.detachnoise.is_detachnoise = image_prc_param_.bits.noise_optimize;
ic.detachnoise.detachnoise = noise_range_;
ic.is_autotext = image_prc_param_.bits.text_direction == TEXT_DIRECTION_AUTO ? 1 :0;