mirror of http://192.168.1.51:8099/lmh188/twain3.0
修改对折协议地址以及部分对折处理。
2021.2.4 修改对折ID为0x8037 2021.2.5 对折算法默认填充黑色修改为白色 修改对折前旋转正面图像180°
This commit is contained in:
parent
0938e8467c
commit
f1738d9a47
|
@ -269,7 +269,7 @@ void ImageMatQueue::setparam(const GScanCap& param)
|
||||||
|
|
||||||
if (scanParam.en_fold)
|
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)
|
if (param.imageRotateDegree != 0.0 || param.is_backrotate180 || param.is_autotext)
|
||||||
|
@ -325,10 +325,9 @@ bool ImageMatQueue::queuesempty()
|
||||||
static int index = 0;
|
static int index = 0;
|
||||||
void ImageMatQueue::proc()
|
void ImageMatQueue::proc()
|
||||||
{
|
{
|
||||||
SYSTEM_INFO sys;
|
int dwnumber = std::thread::thread::hardware_concurrency();
|
||||||
GetSystemInfo(&sys);
|
|
||||||
std::unique_ptr<ThreadPool> m_threadpool;
|
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 (bRun) {
|
||||||
while (m_imagedata.Size() > 0) {
|
while (m_imagedata.Size() > 0) {
|
||||||
this_thread::sleep_for(chrono::milliseconds(1));
|
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)
|
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;
|
vector<cv::Mat> mats;
|
||||||
for (auto& buf : buffs) {
|
for (auto& buf : buffs) {
|
||||||
ImreadModes rmc;
|
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()));
|
//FileTools::write_log("1.txt", " dogear time " + to_string(sw.elapsed_ms()));
|
||||||
if (scanParam.is_switchfrontback)
|
if (scanParam.is_switchfrontback)
|
||||||
swap(mats[0], mats[1]);
|
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++) {
|
for (int j = 0; j < m_iaList.size(); j++) {
|
||||||
m_iaList[j]->apply(mats, scanParam.is_duplex);
|
m_iaList[j]->apply(mats, scanParam.is_duplex);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
CImageApplyConcatenation::CImageApplyConcatenation()
|
CImageApplyConcatenation::CImageApplyConcatenation()
|
||||||
: m_direction(autoDirection)
|
: m_direction(autoDirection)
|
||||||
, m_BG_color(0, 0, 0)
|
, m_BG_color(255, 255, 255)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ enum class CapTypeEx : unsigned short {
|
||||||
TwEx_Sharpen = 0x8022,
|
TwEx_Sharpen = 0x8022,
|
||||||
TwEx_DBAreaNum = 0x8027,
|
TwEx_DBAreaNum = 0x8027,
|
||||||
TwEx_DBDevnMax = 0x8028,
|
TwEx_DBDevnMax = 0x8028,
|
||||||
|
TwEx_EnFold=0x8037,
|
||||||
TwEx_StableDetectEnable = 0x8090,
|
TwEx_StableDetectEnable = 0x8090,
|
||||||
TwEx_UVModel = 0x8093,
|
TwEx_UVModel = 0x8093,
|
||||||
TwEx_SwitchFrontBack = 0x8094,
|
TwEx_SwitchFrontBack = 0x8094,
|
||||||
|
@ -77,7 +78,7 @@ using namespace std::placeholders;
|
||||||
TWPP_ENTRY_MFC(HuagaoDs)
|
TWPP_ENTRY_MFC(HuagaoDs)
|
||||||
|
|
||||||
static constexpr const Identity srcIdent(
|
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,
|
DataGroup::Image,
|
||||||
#ifdef MAKEHUAGAO
|
#ifdef MAKEHUAGAO
|
||||||
"HUAGO",
|
"HUAGO",
|
||||||
|
@ -717,7 +718,6 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_haveError = false;
|
m_haveError = false;
|
||||||
updataGscanCap();
|
updataGscanCap();
|
||||||
bmpData->resize(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER));
|
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);
|
return CapSupGetAllReset<Bool, Bool, CapType::IAutomaticBorderDetection>(msg, data, { false,true }, m_autoboarderdetcet, false, m_autoboarderdetcet ? 1 : 0, 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
m_query[CapType::IImageMerge] = msgSupportGetAllSetReset;
|
//m_query[CapType::IImageMerge] = msgSupportGetAllSetReset;
|
||||||
m_caps[CapType::IImageMerge] = [this](Msg msg, Capability& data)->Result {
|
//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) {
|
if (Msg::Set == msg) {
|
||||||
auto autocrop = data.currentItem<CapType::IImageMerge>();
|
auto autocrop = data.currentItem<Int32>();
|
||||||
m_scanparam->en_fold = (byte)autocrop;
|
m_scanparam->en_fold = (Int32)autocrop;
|
||||||
if ((UInt16)autocrop != 0){
|
if ((UInt16)autocrop != 0){
|
||||||
m_scanparam->is_duplex = 1;
|
m_scanparam->is_duplex = 1;
|
||||||
m_scanparam->autodescrew = 1;//合并可用时 默认自动纠偏
|
m_scanparam->autodescrew = 1;//合并可用时 默认自动纠偏
|
||||||
|
@ -1270,7 +1285,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
||||||
}
|
}
|
||||||
return success();
|
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;
|
m_query[CapType::IAutoDiscardBlankPages] = msgSupportGetAllSetReset;
|
||||||
|
|
BIN
huagao/stdafx.h
BIN
huagao/stdafx.h
Binary file not shown.
Loading…
Reference in New Issue