diff --git a/huagao/Device/ImageMatQueue.cpp b/huagao/Device/ImageMatQueue.cpp index 1b32cf48..23bd7fd5 100644 --- a/huagao/Device/ImageMatQueue.cpp +++ b/huagao/Device/ImageMatQueue.cpp @@ -269,7 +269,7 @@ void ImageMatQueue::setparam(const GScanCap& param) if (scanParam.en_fold) { - m_iaList.push_back(shared_ptr(new CImageApplyConcatenation(CImageApplyConcatenation::horizontal))); + m_iaList.push_back(shared_ptr(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 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>>& buffs) { - //std::ostringstream oss; - //oss << std::this_thread::get_id(); - //std::string stid = oss.str(); - //writelog(stid); vector mats; for (auto& buf : buffs) { ImreadModes rmc; @@ -421,7 +416,10 @@ void ImageMatQueue::imageproceing(std::vector> //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); } diff --git a/huagao/ImageProcess/ImageApplyConcatenation.cpp b/huagao/ImageProcess/ImageApplyConcatenation.cpp index d7d0b9ed..f2200469 100644 --- a/huagao/ImageProcess/ImageApplyConcatenation.cpp +++ b/huagao/ImageProcess/ImageApplyConcatenation.cpp @@ -2,7 +2,7 @@ CImageApplyConcatenation::CImageApplyConcatenation() : m_direction(autoDirection) - , m_BG_color(0, 0, 0) + , m_BG_color(255, 255, 255) { } diff --git a/huagao/huagaods.cpp b/huagao/huagaods.cpp index 14d20995..238f5c99 100644 --- a/huagao/huagaods.cpp +++ b/huagao/huagaods.cpp @@ -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(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(); + // 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(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(); - m_scanparam->en_fold = (byte)autocrop; + auto autocrop = data.currentItem(); + 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(msg, data, m_scanparam->en_fold, 0); + return CapSupGetAllResetEx(msg, data, { 0,1 }, m_scanparam->en_fold, 0,m_scanparam->en_fold ? 1 : 0, 0); }; m_query[CapType::IAutoDiscardBlankPages] = msgSupportGetAllSetReset; diff --git a/huagao/stdafx.h b/huagao/stdafx.h index 7fd25499..81273706 100644 Binary files a/huagao/stdafx.h and b/huagao/stdafx.h differ