This commit is contained in:
gb 2024-01-24 17:40:41 +08:00
parent e806adfbce
commit e1bf64b189
6 changed files with 36 additions and 11 deletions

View File

@ -381,12 +381,10 @@ void scanner_hw::thread_image_capture(void)
break; break;
} }
img.prc_time = watch.elapse_ms(); img.prc_time = watch.elapse_ms();
printf("Fetch paper %d: %ums\n", img.pos.paper_ind + 1, img.prc_time);
mem = new dyn_mem_shared(frame, size, put_v4l2_mem, (void*)ind); mem = new dyn_mem_shared(frame, size, put_v4l2_mem, (void*)ind);
used_v4l2_mem++; used_v4l2_mem++;
img.pos.paper_ind++; img.pos.paper_ind++;
img.pos.status = IMG_STATUS_OK; img.pos.status = IMG_STATUS_OK;
printf("Image height: %d\n", img.height);
img_handler_(mem, true, &img); img_handler_(mem, true, &img);
mem->release(); mem->release();

View File

@ -92,8 +92,8 @@ void auto_crop::init(void)
}; };
OPTION_FUNC(paper) OPTION_FUNC(paper)
{ {
crop_ = strcmp((char*)val, WORDS_PAPER_ORIGIN_SIZE) == 0 crop_ = //strcmp((char*)val, WORDS_PAPER_ORIGIN_SIZE) == 0 ||
|| strcmp((char*)val, WORDS_PAPER_MAX_SIZE_CROP) == 0; strcmp((char*)val, WORDS_PAPER_MAX_SIZE_CROP) == 0;
if(crop_) if(crop_)
memset(&fixed_paper_, 0, sizeof(fixed_paper_)); memset(&fixed_paper_, 0, sizeof(fixed_paper_));
else else
@ -122,8 +122,8 @@ void auto_crop::init(void)
int auto_crop::work(PROCIMGINFO& in, PROCIMGINFO& out) int auto_crop::work(PROCIMGINFO& in, PROCIMGINFO& out)
{ {
int ret = SCANNER_ERR_OK, int ret = SCANNER_ERR_OK,
dWidth = fixed_paper_.cx, dWidth = fixed_paper_.cx * 1.0f / MM_PER_INCH * in.info.resolution_x + .5f,
dHeight = fixed_paper_.cy; dHeight = fixed_paper_.cy * 1.0f / MM_PER_INCH * in.info.resolution_x + .5f;
cv::Mat thre; cv::Mat thre;
@ -165,7 +165,7 @@ int auto_crop::work(PROCIMGINFO& in, PROCIMGINFO& out)
cv::Scalar blankColor; cv::Scalar blankColor;
if (fill_bg_) if (fill_bg_)
if (/*isColorBlank*/1) if (/*isColorBlank*/0)
{ {
cv::Rect boudingRect = cv::boundingRect(maxContour); cv::Rect boudingRect = cv::boundingRect(maxContour);
boudingRect.x *= FX_FY; boudingRect.x *= FX_FY;
@ -324,6 +324,7 @@ int auto_crop::process(std::vector<PROCIMGINFO>& in, std::vector<PROCIMGINFO>& o
chronograph watch; chronograph watch;
ret = work(v, o); ret = work(v, o);
o.info = v.info; o.info = v.info;
o.info.prc_time = watch.elapse_ms(); o.info.prc_time = watch.elapse_ms();
o.info.prc_stage = get_position(); o.info.prc_stage = get_position();

View File

@ -14,7 +14,7 @@ class auto_crop : public image_processor
bool fill_bg_ = true; bool fill_bg_ = true;
bool convex_ = true; bool convex_ = true;
bool fill_clr_ = false; bool fill_clr_ = false;
int threshold_ = 10; int threshold_ = 40;
int indent_ = 5; int indent_ = 5;
int noise_ = 8; int noise_ = 8;
SIZE fixed_paper_ = {0, 0}; SIZE fixed_paper_ = {0, 0};

View File

@ -34,6 +34,18 @@ imgproc_mgr::imgproc_mgr(std::function<void(data_source_ptr)> sender
{ {
thread_worker(); thread_worker();
}; };
auto restart = [this](const char* thread_name) ->void
{
auto thrd = [this](void) -> void
{
thread_worker();
};
workers_.stop(thread_name);
add_busy_worker(-1);
printf("\nrestart imgproc_mgr::thread_worker\n\n");
workers_.start(thrd, "imgproc_mgr::thread_worker", (void*)&imgproc_mgr::thread_worker);
};
workers_.set_exception_handler(restart);
workers_.start(thrd, "imgproc_mgr::thread_worker", (void*)&imgproc_mgr::thread_worker); workers_.start(thrd, "imgproc_mgr::thread_worker", (void*)&imgproc_mgr::thread_worker);
} }
imgproc_mgr::~imgproc_mgr() imgproc_mgr::~imgproc_mgr()
@ -158,7 +170,6 @@ void imgproc_mgr::send_image(LPPACKIMAGE head, uint8_t* data, size_t size, void*
dyn_mem_ptr mem(dyn_mem::memory(size)); dyn_mem_ptr mem(dyn_mem::memory(size));
image_packet_ptr ptr = nullptr; image_packet_ptr ptr = nullptr;
printf("send image %d(%d-0x%04x) with size %u:\n", head->pos.paper_ind, head->pos.paper_side, head->prc_stage, size);
mem->put(data, size); mem->put(data, size);
ptr = imgproc_mgr::image_sent_packet(head, mem, scan_id_, info, info_l); ptr = imgproc_mgr::image_sent_packet(head, mem, scan_id_, info, info_l);
mem->release(); mem->release();

View File

@ -163,12 +163,27 @@ int image_holder::save_2_file(const char* root_dir, const char* alg)
{ {
fwrite(bfh.c_str(), 1, bfh.length(), dst); fwrite(bfh.c_str(), 1, bfh.length(), dst);
fwrite(bih.c_str(), 1, bih.length(), dst); fwrite(bih.c_str(), 1, bih.length(), dst);
fwrite(data() + head_.info_size, 1, head_.data_size, dst); if(head_.data_size == ((LPBITMAPINFOHEADER)&bih[0])->biSizeImage)
fwrite(data() + head_.info_size, 1, head_.data_size, dst);
else
{
int l = BMP_LINE_BYTES(head_.width * head_.bpp * head_.channels),
dif = l - (head_.width * head_.bpp * head_.channels + 7) / 8;
char pad[4] = { 0 };
uint8_t *ptr = data() + head_.info_size;
for (int i = 0; i < head_.height; ++i)
{
fwrite(ptr, 1, l - dif, dst);
fwrite(pad, 1, dif, dst);
ptr += l - dif;
}
}
} }
} }
if (dst) if (dst)
fclose(dst); fclose(dst);
utils::to_log(LOG_LEVEL_ALL, "Image-Process of file '%s' is %ums.\n", file.c_str(), head_.prc_time);
return err; return err;
} }

View File

@ -61,7 +61,7 @@ add_defines("BUILD_AS_DEVICE")
add_defines("VER_MAIN=2") add_defines("VER_MAIN=2")
add_defines("VER_FAMILY=200") add_defines("VER_FAMILY=200")
add_defines("VER_DATE=20240124") add_defines("VER_DATE=20240124")
add_defines("VER_BUILD=8") add_defines("VER_BUILD=25")
target("conf") target("conf")
set_kind("phony") set_kind("phony")