修改对折协议地址以及部分对折处理。

2021.2.4    修改对折ID为0x8037
2021.2.5    对折算法默认填充黑色修改为白色
	修改对折前旋转正面图像180°
This commit is contained in:
masayume 2021-02-08 11:11:06 +08:00
parent 0938e8467c
commit f1738d9a47
4 changed files with 30 additions and 17 deletions

View File

@ -269,7 +269,7 @@ void ImageMatQueue::setparam(const GScanCap& param)
if (scanParam.en_fold)
{
m_iaList.push_back(shared_ptr<CImageApply>(new CImageApplyConcatenation(CImageApplyConcatenation::horizontal)));
m_iaList.push_back(shared_ptr<CImageApply>(new CImageApplyConcatenation(CImageApplyConcatenation::horizontal,cv::Scalar(255,255,255))));
}
if (param.imageRotateDegree != 0.0 || param.is_backrotate180 || param.is_autotext)
@ -325,10 +325,9 @@ bool ImageMatQueue::queuesempty()
static int index = 0;
void ImageMatQueue::proc()
{
SYSTEM_INFO sys;
GetSystemInfo(&sys);
int dwnumber = std::thread::thread::hardware_concurrency();
std::unique_ptr<ThreadPool> m_threadpool;
m_threadpool.reset(new ThreadPool(sys.dwNumberOfProcessors < 4 ? 1 : sys.dwNumberOfProcessors / 2));
m_threadpool.reset(new ThreadPool(dwnumber < 4 ? 1 : dwnumber / 2));
while (bRun) {
while (m_imagedata.Size() > 0) {
this_thread::sleep_for(chrono::milliseconds(1));
@ -351,10 +350,6 @@ void ImageMatQueue::proc()
void ImageMatQueue::imageproceing(std::vector<std::shared_ptr<std::vector<char>>>& buffs)
{
//std::ostringstream oss;
//oss << std::this_thread::get_id();
//std::string stid = oss.str();
//writelog(stid);
vector<cv::Mat> mats;
for (auto& buf : buffs) {
ImreadModes rmc;
@ -421,7 +416,10 @@ void ImageMatQueue::imageproceing(std::vector<std::shared_ptr<std::vector<char>>
//FileTools::write_log("1.txt", " dogear time " + to_string(sw.elapsed_ms()));
if (scanParam.is_switchfrontback)
swap(mats[0], mats[1]);
if (scanParam.en_fold != 0) {
cv::flip(mats[0], mats[0], 1);
cv::flip(mats[0], mats[0], 0);
}
for (int j = 0; j < m_iaList.size(); j++) {
m_iaList[j]->apply(mats, scanParam.is_duplex);
}

View File

@ -2,7 +2,7 @@
CImageApplyConcatenation::CImageApplyConcatenation()
: m_direction(autoDirection)
, m_BG_color(0, 0, 0)
, m_BG_color(255, 255, 255)
{
}

View File

@ -44,6 +44,7 @@ enum class CapTypeEx : unsigned short {
TwEx_Sharpen = 0x8022,
TwEx_DBAreaNum = 0x8027,
TwEx_DBDevnMax = 0x8028,
TwEx_EnFold=0x8037,
TwEx_StableDetectEnable = 0x8090,
TwEx_UVModel = 0x8093,
TwEx_SwitchFrontBack = 0x8094,
@ -77,7 +78,7 @@ using namespace std::placeholders;
TWPP_ENTRY_MFC(HuagaoDs)
static constexpr const Identity srcIdent(
Version(3, 3, Language::English, Country::China, "v3.3.4.2"),
Version(3, 3, Language::English, Country::China, "v3.3.4.3"),
DataGroup::Image,
#ifdef MAKEHUAGAO
"HUAGO",
@ -717,7 +718,6 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
}
}
}
m_haveError = false;
updataGscanCap();
bmpData->resize(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER));
@ -1258,11 +1258,26 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
return CapSupGetAllReset<Bool, Bool, CapType::IAutomaticBorderDetection>(msg, data, { false,true }, m_autoboarderdetcet, false, m_autoboarderdetcet ? 1 : 0, 0);
};
m_query[CapType::IImageMerge] = msgSupportGetAllSetReset;
m_caps[CapType::IImageMerge] = [this](Msg msg, Capability& data)->Result {
//m_query[CapType::IImageMerge] = msgSupportGetAllSetReset;
//m_caps[CapType::IImageMerge] = [this](Msg msg, Capability& data)->Result {
// if (Msg::Set == msg) {
// auto autocrop = data.currentItem<CapType::IImageMerge>();
// m_scanparam->en_fold = (byte)autocrop;
// if ((UInt16)autocrop != 0){
// m_scanparam->is_duplex = 1;
// m_scanparam->autodescrew = 1;//合并可用时 默认自动纠偏
// m_scanparam->is_autodiscradblank_normal = m_scanparam->is_autodiscradblank_vince = 0;
// }
// return success();
// }
// return CapSupGetAllResetEx<byte, UInt16, CapType::IImageMerge>(msg, data, m_scanparam->en_fold, 0);
//};
m_query[CapType(CapTypeEx::TwEx_EnFold)] = msgSupportGetAllSetReset;
m_caps[CapType(CapTypeEx::TwEx_EnFold)] = [this](Msg msg, Capability& data)->Result {
if (Msg::Set == msg) {
auto autocrop = data.currentItem<CapType::IImageMerge>();
m_scanparam->en_fold = (byte)autocrop;
auto autocrop = data.currentItem<Int32>();
m_scanparam->en_fold = (Int32)autocrop;
if ((UInt16)autocrop != 0){
m_scanparam->is_duplex = 1;
m_scanparam->autodescrew = 1;//合并可用时 默认自动纠偏
@ -1270,7 +1285,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
}
return success();
}
return CapSupGetAllResetEx<byte, UInt16, CapType::IImageMerge>(msg, data, m_scanparam->en_fold, 0);
return CapSupGetAllResetEx<byte, Int32, (CapType)CapTypeEx::TwEx_EnFold>(msg, data, { 0,1 }, m_scanparam->en_fold, 0,m_scanparam->en_fold ? 1 : 0, 0);
};
m_query[CapType::IAutoDiscardBlankPages] = msgSupportGetAllSetReset;

Binary file not shown.