调整畸变流程

This commit is contained in:
13038267101 2022-12-31 11:06:46 +08:00
parent f70e5d1e93
commit c075cea1d0
4 changed files with 35 additions and 10 deletions

View File

@ -5,6 +5,9 @@ int CISTestImageProcess::test(const cv::Mat& image, CISTestResult& result)
//std::vector<cv::RotatedRect> marks;
//int res = findMarks(image, marks);
//return res;
result.scaleXY1 = -1;
result.scaleXY2 = -1;
result.scaleXY3 = -1;
if (image.channels() != 3)
return -1;
@ -20,15 +23,17 @@ int CISTestImageProcess::test(const cv::Mat& image, CISTestResult& result)
//cv::imwrite("range1.jpg", mask_s);
cv::inRange(hsv_channels[0], 0, 84, range_h); //饱和度在[220, 255]的像素
cv::inRange(hsv_channels[0], 213, 255, range_temp); //饱和度在[220, 255]的像素
//cv::imwrite("range3.jpg", range_temp);
range_h &= mask_s;
range_h |= range_temp & mask_s;
//cv::imwrite("range3.jpg", range_h);
findEllipse(range_h, result.scaleXY1);
cv::inRange(hsv_channels[0], 42, 170, range_h); //饱和度在[220, 255]的像素
cv::inRange(hsv_channels[0], 30, 150, range_h); //饱和度在[220, 255]的像素
range_h &= mask_s;
//cv::imwrite("range4.jpg", range_h);
findEllipse(range_h, result.scaleXY2);
cv::inRange(hsv_channels[0], 128, 213, range_h); //饱和度在[220, 255]的像素
range_h &= mask_s;
//cv::imwrite("range5.jpg", range_h);
findEllipse(range_h, result.scaleXY3);
return 0;
@ -208,6 +213,6 @@ int CISTestImageProcess::findEllipse(const cv::Mat& image, double& scale_xy, dou
box.size.width = box.size.height;
box.size.height = temp;
}
areaThre = box.size.width / box.size.height;
scale_xy = box.size.width / box.size.height;
return 0;
}

View File

@ -945,12 +945,22 @@ void hg_scanner::thread_handle_image_process(void)
break;
}
}
catch (const std::exception& e)
{
if (is_dpi_color_check)
stop_fatal_ = SCANNER_ERR_DEVICE_DISTORTION;
else
stop_fatal_ = SCANNER_ERR_INSUFFICIENT_MEMORY;
VLOG_MINI_1(LOG_LEVEL_ALL, "is opencv Fatal: %s\n", e.what());
stop();
break;
}
catch (...)
{
VLOG_MINI_1(LOG_LEVEL_FATAL, "FATAL: Insufficient memory when proecss image with %d bytes.\n", tiny_buffer->size());
stop_fatal_ = SCANNER_ERR_INSUFFICIENT_MEMORY;
stop();
break;
}
}
else
@ -1044,6 +1054,9 @@ void hg_scanner::working_done(void*)
case SCANNER_ERR_DEVICE_AUTO_FAIL_OVER:
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_AUTO_FAIL_OVER, SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_DISTORTION:
notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_DISTORTION, SANE_EVENT_SCAN_FINISHED, status_);
break;
default:
notify_ui_working_status(user_cancel_ ? STATU_DESC_SCAN_CANCELED : STATU_DESC_SCAN_STOPPED, SANE_EVENT_SCAN_FINISHED, status_);
break;
@ -3819,6 +3832,10 @@ int hg_scanner::image_configuration(SCANCONF& ic)
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT
|| image_prc_param_.bits.page == PAGE_FOLIO);
if (is_dpi_color_check)
{
ic.is_duplex = false;
}
ic.en_fold = (image_prc_param_.bits.page == PAGE_FOLIO);
ic.pixtype = image_prc_param_.bits.color_mode == COLOR_MODE_AUTO_MATCH ? 2 : image_prc_param_.bits.color_mode;

View File

@ -841,7 +841,7 @@ int hg_scanner_300::set_dpi_color_check_val(void)
{
int ret = SCANNER_ERR_OK,
len = 0;
USBCB usbcb = { setting3288dsp::SET_JUST_COF_H ,1,resolution_ };
USBCB usbcb = { setting3288dsp::SET_JUST_COF_V ,save_dpi_color_check_val,resolution_ };
len = sizeof(usbcb);
io_->write_bulk(&usbcb, &len);

View File

@ -520,7 +520,7 @@ namespace hg_imgproc
rmc = cv::IMREAD_COLOR;
}
cv::Mat mat(cv::imdecode(*buf, rmc));
//cv::imwrite("1.jpg",mat);
//cv::imwrite("imdecode.jpg",mat);
if (mat.empty())
{
@ -1307,12 +1307,15 @@ namespace hg_imgproc
for (size_t i = 0; i < mats.size(); ++i)
{
CISTestImageProcess::CISTestResult r;
CISTestImageProcess::test(mats[i], r);
//cv::imwrite(to_string(i) + "cis_test_image.jpg", mats[i]);
CISTestImageProcess::test(mats[i], res);
mats_.push_back(mats[i]);
/*cv::imwrite("1.jpg",mats[i]);*/
//cv::imwrite("CISTestImageProcess.jpg",mats[i]);
return ret;
}
return ret;
}
HGImage opencv_to_hgbase_image(const cv::Mat& mats)
{