调整畸变流程
This commit is contained in:
parent
f70e5d1e93
commit
c075cea1d0
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
HGImage opencv_to_hgbase_image(const cv::Mat& mats)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue