删除冗余属性;待纸扫描加入退出时间控制

This commit is contained in:
gb 2024-03-09 13:50:53 +08:00
parent 9c25fa52f3
commit b7c0f6600a
11 changed files with 39 additions and 126 deletions

View File

@ -1,12 +1,12 @@
{
"clr-correct": {
"cat": "imgp",
"group": "imgp",
"group": "高级设置",
"title": "颜色校正",
"desc": "根据校正参数调整从CIS出来的原始图像颜色",
"type": "bool",
"pos": 24,
"ui-pos": -1,
"ui-pos": 10,
"auth": 0,
"size": 4,
"cur": true,
@ -14,12 +14,12 @@
},
"lut-file": {
"cat": "imgp",
"group": "imgp",
"group": "高级设置",
"title": "校正模板",
"desc": "颜色校正使用的基准图像数据",
"type": "string",
"pos": 25,
"ui-pos": -1,
"ui-pos": 11,
"auth": 0,
"bind": true,
"size": 80,

View File

@ -1,48 +1,4 @@
{
"is-multiout": {
"cat": "base",
"group": "base",
"title": "多流输出",
"desc": "同时输出多种颜色模式的图像",
"type": "bool",
"fix-id": 34817,
"ui-pos": 10,
"auth": 0,
"size": 4,
"cur": false,
"default": false
},
"multiout-type": {
"cat": "base",
"group": "base",
"title": "多流输出类型",
"desc": "选择多流输出的类型",
"type": "string",
"fix-id": 34818,
"ui-pos": 11,
"auth": 0,
"enabled": false,
"size": 66,
"cur": "彩色+灰度+黑白",
"default": "彩色+灰度+黑白",
"range": ["彩色+灰度+黑白", "彩色+灰度", "彩色+黑白", "灰度+黑白"],
"depend": "is-multiout==true"
},
"mode": {
"cat": "base",
"group": "base",
"title": "颜色模式",
"desc": "选择色彩模式",
"type": "string",
"fix-id": 34819,
"ui-pos": 15,
"auth": 0,
"size": 24,
"cur": "24位彩色",
"default": "24位彩色",
"range": ["24位彩色", "256级灰度", "黑白", "颜色自动识别"],
"depend": "is-multiout!=true"
},
"dump-img": {
"cat": "base",
"group": "高级设置",
@ -55,31 +11,5 @@
"size": 4,
"cur": false,
"default": false
},
"cis-rebuild": {
"cat": "advanced",
"group": "高级设置",
"title": "图像拼接",
"desc": "从CIS数据流重建图像",
"type": "bool",
"ui-pos": 20,
"auth": 0,
"affect": 2,
"size": 4,
"cur": true,
"default": true
},
"stretch": {
"cat": "advanced",
"group": "高级设置",
"title": "图像拉伸",
"desc": "将硬件分辨率拉伸到用户指定的分辨率",
"type": "bool",
"ui-pos": 30,
"auth": 0,
"affect": 2,
"size": 4,
"cur": true,
"default": true
}
}

View File

@ -1,7 +1,7 @@
{
"rebuild": {
"cat": "imgp",
"group": "imgp",
"group": "高级设置",
"title": "CIS图像还原",
"desc": "将从CIS输出的原始数据流还原为BMP图片并拆分正反面",
"type": "bool",

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
static std::string device_opt_json[] = {
"{\"clr-correct\":{\"cat\":\"imgp\",\"group\":\"imgp\",\"title\":\"\\u989c\\u8272\\u6821\\u6b63\",\"desc\":\"\\u6839\\u636e\\u6821\\u6b63\\u53c2\\u6570\\uff0c\\u8c03\\u6574\\u4eceCIS\\u51fa\\u6765\\u7684\\u539f\\u59cb\\u56fe\\u50cf\\u989c\\u8272\",\"type\":\"bool\",\"pos\":24,\"ui-pos\":-1,\"auth\":0,\"size\":4,\"cur\":true,\"default\":true},\"lut-file\":{\"cat\":\"imgp\",\"group\":\"imgp\",\"title\":\"\\u6821\\u6b63\\u6a21\\u677f\",\"desc\":\"\\u989c\\u8272\\u6821\\u6b63\\u4f7f\\u7528\\u7684\\u57fa\\u51c6\\u56fe\\u50cf\\u6570\\u636e\",\"type\":\"string\",\"pos\":25,\"ui-pos\":-1,\"auth\":0,\"bind\":true,\"size\":80,\"default\":{\"cis-mode==\\u5f69\\u8272&&resolution>200&&resolution<400\":\"\\/usr\\/local\\/huago\\/Textlut300clr.bmp\",\"cis-mode==\\u5f69\\u8272&&resolution>=400\":\"\\/usr\\/local\\/huago\\/Textlut600clr.bmp\",\"cis-mode==\\u7070\\u5ea6&&resolution<=200\":\"\\/usr\\/local\\/huago\\/Textlut200gray.bmp\",\"cis-mode==\\u7070\\u5ea6&&resolution>200&&resolution<400\":\"\\/usr\\/local\\/huago\\/Textlut300gray.bmp\",\"cis-mode==\\u7070\\u5ea6&&resolution>=400\":\"\\/usr\\/local\\/huago\\/Textlut600gray.bmp\",\"default\":\"\\/usr\\/local\\/huago\\/Textlut200clr.bmp\"}},\"cis-mode\":{\"cat\":\"none\",\"group\":\"CIS\",\"title\":\"CIS\\u989c\\u8272\\u6a21\\u5f0f\",\"desc\":\"\\u9009\\u62e9\\u955c\\u5934\\u8272\\u5f69\\u5de5\\u4f5c\\u6a21\\u5f0f\",\"type\":\"string\",\"pos\":1000,\"ui-pos\":10,\"auth\":0,\"bind\":true,\"size\":12,\"default\":{\"(mode.enabled&&(mode==256\\u7ea7\\u7070\\u5ea6||mode==\\u9ed1\\u767d)) || (multiout-type.enabled&&multiout-type==\\u7070\\u5ea6+\\u9ed1\\u767d)\":\"\\u7070\\u5ea6\",\"default\":\"\\u5f69\\u8272\"},\"range\":[\"\\u5f69\\u8272\",\"\\u7070\\u5ea6\"]}}"
"{\"clr-correct\":{\"cat\":\"imgp\",\"group\":\"\\u9ad8\\u7ea7\\u8bbe\\u7f6e\",\"title\":\"\\u989c\\u8272\\u6821\\u6b63\",\"desc\":\"\\u6839\\u636e\\u6821\\u6b63\\u53c2\\u6570\\uff0c\\u8c03\\u6574\\u4eceCIS\\u51fa\\u6765\\u7684\\u539f\\u59cb\\u56fe\\u50cf\\u989c\\u8272\",\"type\":\"bool\",\"pos\":24,\"ui-pos\":10,\"auth\":0,\"size\":4,\"cur\":true,\"default\":true},\"lut-file\":{\"cat\":\"imgp\",\"group\":\"\\u9ad8\\u7ea7\\u8bbe\\u7f6e\",\"title\":\"\\u6821\\u6b63\\u6a21\\u677f\",\"desc\":\"\\u989c\\u8272\\u6821\\u6b63\\u4f7f\\u7528\\u7684\\u57fa\\u51c6\\u56fe\\u50cf\\u6570\\u636e\",\"type\":\"string\",\"pos\":25,\"ui-pos\":11,\"auth\":0,\"bind\":true,\"size\":80,\"default\":{\"cis-mode==\\u5f69\\u8272&&resolution>200&&resolution<400\":\"\\/usr\\/local\\/huago\\/Textlut300clr.bmp\",\"cis-mode==\\u5f69\\u8272&&resolution>=400\":\"\\/usr\\/local\\/huago\\/Textlut600clr.bmp\",\"cis-mode==\\u7070\\u5ea6&&resolution<=200\":\"\\/usr\\/local\\/huago\\/Textlut200gray.bmp\",\"cis-mode==\\u7070\\u5ea6&&resolution>200&&resolution<400\":\"\\/usr\\/local\\/huago\\/Textlut300gray.bmp\",\"cis-mode==\\u7070\\u5ea6&&resolution>=400\":\"\\/usr\\/local\\/huago\\/Textlut600gray.bmp\",\"default\":\"\\/usr\\/local\\/huago\\/Textlut200clr.bmp\"}},\"cis-mode\":{\"cat\":\"none\",\"group\":\"CIS\",\"title\":\"CIS\\u989c\\u8272\\u6a21\\u5f0f\",\"desc\":\"\\u9009\\u62e9\\u955c\\u5934\\u8272\\u5f69\\u5de5\\u4f5c\\u6a21\\u5f0f\",\"type\":\"string\",\"pos\":1000,\"ui-pos\":10,\"auth\":0,\"bind\":true,\"size\":12,\"default\":{\"(mode.enabled&&(mode==256\\u7ea7\\u7070\\u5ea6||mode==\\u9ed1\\u767d)) || (multiout-type.enabled&&multiout-type==\\u7070\\u5ea6+\\u9ed1\\u767d)\":\"\\u7070\\u5ea6\",\"default\":\"\\u5f69\\u8272\"},\"range\":[\"\\u5f69\\u8272\",\"\\u7070\\u5ea6\"]}}"
};

View File

@ -8,7 +8,7 @@
static std::string device_opt_json[] = {
"{\"rebuild\":{\"cat\":\"imgp\",\"group\":\"imgp\",\"title\":\"CIS\\u56fe\\u50cf\\u8fd8\\u539f\",\"desc\":\"\\u5c06\\u4eceCIS\\u8f93\\u51fa\\u7684\\u539f\\u59cb\\u6570\\u636e\\u6d41\\uff0c\\u8fd8\\u539f\\u4e3aBMP\\u56fe\\u7247\\uff0c\\u5e76\\u62c6\\u5206\\u6b63\\u53cd\\u9762\",\"type\":\"bool\",\"pos\":10,\"ui-pos\":1,\"auth\":0,\"visible\":0,\"size\":4,\"auto\":false,\"cur\":true,\"default\":true}}"
"{\"rebuild\":{\"cat\":\"imgp\",\"group\":\"\\u9ad8\\u7ea7\\u8bbe\\u7f6e\",\"title\":\"CIS\\u56fe\\u50cf\\u8fd8\\u539f\",\"desc\":\"\\u5c06\\u4eceCIS\\u8f93\\u51fa\\u7684\\u539f\\u59cb\\u6570\\u636e\\u6d41\\uff0c\\u8fd8\\u539f\\u4e3aBMP\\u56fe\\u7247\\uff0c\\u5e76\\u62c6\\u5206\\u6b63\\u53cd\\u9762\",\"type\":\"bool\",\"pos\":10,\"ui-pos\":1,\"auth\":0,\"visible\":0,\"size\":4,\"auto\":false,\"cur\":true,\"default\":true}}"
};
rebuild::rebuild(bool weaker) : image_processor("rebuild")
@ -26,7 +26,7 @@ int rebuild::set_value(const char* name/*nullptr for all options*/, void* val/*n
int ret = SCANNER_ERR_OK;
if(strcmp(name, SANE_OPT_NAME(CIS_REBUILD)) == 0)
rebuild_ = *(bool*)val;
enabled_ = *(bool*)val;
else
ret = SCANNER_ERR_DEVICE_NOT_SUPPORT;
@ -44,15 +44,13 @@ image_processor* rebuild::copy_weaker(void)
weaker->pos_ = pos_;
weaker->enabled_ = enabled_;
weaker->rebuild_ = rebuild_;
return weaker;
}
int rebuild::process(std::vector<PROCIMGINFO>& in, std::vector<PROCIMGINFO>& out)
{
int ret = SCANNER_ERR_OK;
if(is_enable() && rebuild_)
if(is_enable())
{
for(auto& v: in)
{

View File

@ -7,8 +7,6 @@
class rebuild : public image_processor
{
bool rebuild_ = true;
public:
rebuild(bool weaker = false);

View File

@ -24,7 +24,7 @@
}
static std::string device_opt_json[] = {
"{\"is-multiout\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u591a\\u6d41\\u8f93\\u51fa\",\"desc\":\"\\u540c\\u65f6\\u8f93\\u51fa\\u591a\\u79cd\\u989c\\u8272\\u6a21\\u5f0f\\u7684\\u56fe\\u50cf\",\"type\":\"bool\",\"fix-id\":34817,\"ui-pos\":10,\"auth\":0,\"size\":4,\"cur\":false,\"default\":false},\"multiout-type\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u591a\\u6d41\\u8f93\\u51fa\\u7c7b\\u578b\",\"desc\":\"\\u9009\\u62e9\\u591a\\u6d41\\u8f93\\u51fa\\u7684\\u7c7b\\u578b\",\"type\":\"string\",\"fix-id\":34818,\"ui-pos\":11,\"auth\":0,\"enabled\":false,\"size\":66,\"cur\":\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"default\":\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"range\":[\"\\u5f69\\u8272+\\u7070\\u5ea6+\\u9ed1\\u767d\",\"\\u5f69\\u8272+\\u7070\\u5ea6\",\"\\u5f69\\u8272+\\u9ed1\\u767d\",\"\\u7070\\u5ea6+\\u9ed1\\u767d\"],\"depend\":\"is-multiout==true\"},\"mode\":{\"cat\":\"base\",\"group\":\"base\",\"title\":\"\\u989c\\u8272\\u6a21\\u5f0f\",\"desc\":\"\\u9009\\u62e9\\u8272\\u5f69\\u6a21\\u5f0f\",\"type\":\"string\",\"fix-id\":34819,\"ui-pos\":15,\"auth\":0,\"size\":24,\"cur\":\"24\\u4f4d\\u5f69\\u8272\",\"default\":\"24\\u4f4d\\u5f69\\u8272\",\"range\":[\"24\\u4f4d\\u5f69\\u8272\",\"256\\u7ea7\\u7070\\u5ea6\",\"\\u9ed1\\u767d\",\"\\u989c\\u8272\\u81ea\\u52a8\\u8bc6\\u522b\"],\"depend\":\"is-multiout!=true\"},\"dump-img\":{\"cat\":\"base\",\"group\":\"\\u9ad8\\u7ea7\\u8bbe\\u7f6e\",\"title\":\"\\u8f93\\u51fa\\u4e2d\\u95f4\\u56fe\\u50cf\",\"desc\":\"\\u8f93\\u51fa\\u5404\\u7b97\\u6cd5\\u4e2d\\u95f4\\u7ed3\\u679c\\u56fe\\u50cf\",\"type\":\"bool\",\"ui-pos\":10,\"auth\":0,\"affect\":2,\"size\":4,\"cur\":false,\"default\":false},\"cis-rebuild\":{\"cat\":\"advanced\",\"group\":\"\\u9ad8\\u7ea7\\u8bbe\\u7f6e\",\"title\":\"\\u56fe\\u50cf\\u62fc\\u63a5\",\"desc\":\"\\u4eceCIS\\u6570\\u636e\\u6d41\\u91cd\\u5efa\\u56fe\\u50cf\",\"type\":\"bool\",\"ui-pos\":20,\"auth\":0,\"affect\":2,\"size\":4,\"cur\":true,\"default\":true},\"stretch\":{\"cat\":\"advanced\",\"group\":\"\\u9ad8\\u7ea7\\u8bbe\\u7f6e\",\"title\":\"\\u56fe\\u50cf\\u62c9\\u4f38\",\"desc\":\"\\u5c06\\u786c\\u4ef6\\u5206\\u8fa8\\u7387\\u62c9\\u4f38\\u5230\\u7528\\u6237\\u6307\\u5b9a\\u7684\\u5206\\u8fa8\\u7387\",\"type\":\"bool\",\"ui-pos\":30,\"auth\":0,\"affect\":2,\"size\":4,\"cur\":true,\"default\":true}}"
"{\"dump-img\":{\"cat\":\"base\",\"group\":\"\\u9ad8\\u7ea7\\u8bbe\\u7f6e\",\"title\":\"\\u8f93\\u51fa\\u4e2d\\u95f4\\u56fe\\u50cf\",\"desc\":\"\\u8f93\\u51fa\\u5404\\u7b97\\u6cd5\\u4e2d\\u95f4\\u7ed3\\u679c\\u56fe\\u50cf\",\"type\":\"bool\",\"ui-pos\":10,\"auth\":0,\"affect\":2,\"size\":4,\"cur\":false,\"default\":false}}"
};
@ -224,7 +224,7 @@ void imgproc_mgr::start_workers(int cnt)
param->mean.que->enable_wait_log(false);
param->mean.scan_id = scan_id_;
param->mean.session = session_id_;
param->mean.rebld = do_rebuild_ ? dynamic_cast<rebuild*>(first_->copy_weaker()) : nullptr;
param->mean.rebld = first_->is_enable() ? dynamic_cast<rebuild*>(first_->copy_weaker()) : nullptr;
param->mean.encoder = dynamic_cast<img_encoder*>(last_->copy_weaker());
param->mean.dumpi = dump_img_;
if(param->mean.dumpi)
@ -368,7 +368,7 @@ void imgproc_mgr::process(RAWIMG* img, LPPAGEDPARAM param, int thrd_sn)
param->mean.dump(param, &in, nullptr, nullptr, nullptr, 0, false, param->mean.dump_param);
}
#else
if(do_rebuild_)
if(first_->is_enable())
{
first_->do_rebuild(&img->info, img->data->ptr(), in);
utils::to_log(LOG_LEVEL_ALL, "Thread %d Rebuild paper %d spend %llu milliseconds.\n", thrd_sn + 1, img->info.pos.paper_ind, watch.elapse_ms());
@ -487,19 +487,6 @@ int imgproc_mgr::set_value(const char* name, void* val)
if(strcmp(name, SANE_OPT_NAME(DUMP_IMG)) == 0)
dump_img_ = *(bool*)val;
else if(strcmp(name, SANE_OPT_NAME(CIS_REBUILD)) == 0)
do_rebuild_ = *(bool*)val;
else if(strcmp(name, SANE_OPT_NAME(CIS_STRETCH)) == 0)
{
for(auto& v: processors_)
{
if(strcmp(v->from(), name) == 0)
{
v->enable(name, *(bool*)val);
break;
}
}
}
else
ret = SCANNER_ERR_DEVICE_NOT_SUPPORT;
@ -557,7 +544,7 @@ int imgproc_mgr::process(LPPACKIMAGE info, dyn_mem_ptr data, bool img)
cv::Mat mat(info->width, info->height, CV_8UC1, data->ptr());
send_image(paged, info, mat, nullptr, 0, false);
}
if(do_rebuild_)
if(first_->is_enable())
{
chronograph watch;
first_->do_rebuild(info, data->ptr(), ri.imgs);
@ -579,8 +566,11 @@ int imgproc_mgr::process(LPPACKIMAGE info, dyn_mem_ptr data, bool img)
PROCIMGINFO i;
i.info.data_size = (uint32_t)(long)info;
ri.imgs.push_back(i);
printf("--> Rebuild %d papers in %llums, average is %.2fms\n", scan_count
, rebuild_cis, rebuild_cis * 1.0f / scan_count);
if(scan_count)
{
printf("--> Rebuild %d papers in %llums, average is %.2fms\n", scan_count
, rebuild_cis, rebuild_cis * 1.0f / scan_count);
}
}
#else
ri.data = data;

View File

@ -83,7 +83,6 @@ class imgproc_mgr : public sane_opt_provider
refer_guard<rebuild> first_;
refer_guard<img_encoder> last_;
bool do_rebuild_ = true;
volatile bool run_ = true;
volatile uint32_t sent_ind_ = 1;
bool dump_img_ = false;

View File

@ -175,7 +175,6 @@
#define SANE_STD_OPT_NAME_CIS_SAMPLE "sample"
#define SANE_STD_OPT_NAME_CIS_SP "cis-sp"
#define SANE_STD_OPT_NAME_CIS_LED "cis-led"
#define SANE_STD_OPT_NAME_CIS_STRETCH "stretch"
#define SANE_STD_OPT_NAME_CIS_EXPO_FB "expo-fb"
#define SANE_STD_OPT_NAME_CIS_EXPO_FG "expo-fg"
#define SANE_STD_OPT_NAME_CIS_EXPO_FR "expo-fr"

View File

@ -60,8 +60,8 @@ add_packagedirs("sdk")
add_defines("BUILD_AS_DEVICE")
add_defines("VER_MAIN=2")
add_defines("VER_FAMILY=200")
add_defines("VER_DATE=20240308")
add_defines("VER_BUILD=25")
add_defines("VER_DATE=20240309")
add_defines("VER_BUILD=5")
target("conf")
set_kind("phony")