采集流程已经正常

This commit is contained in:
罗颖 2019-12-06 13:38:18 +08:00
parent 4de9aefeac
commit ff44b7b7ba
7 changed files with 27 additions and 70 deletions

View File

@ -94,7 +94,7 @@ extern HINSTANCE g_hinstance;
#endif
//GScn_Drv g_drv;
std::shared_ptr<IGScan> g_scan(new GScanO200());
std::shared_ptr<IGScan> g_scan(new GScan200());
//////////////////////////////////////////////////////////////////////////////
CScanner_FreeImage::CScanner_FreeImage() :

View File

@ -323,14 +323,13 @@ void GDevice::Int_main()
{
image_indexs.Put(int_buffer[1]);
}
MotorStatus ms;
ms.value =int_buffer[0];
MotorStatus* ms = (MotorStatus*)int_buffer;
if (ms->value && 0x7fe) {
m_run = false;
}
if (event_call)
{
//0x3fe ==>b 1111 1111 10
if (ms.value & 0x3fe) {
event_call(ms.value, m_eventcall_userdata);
}
}
}
}

View File

@ -3,6 +3,7 @@
#include "GDeviceLists.h"
#include "IGDevice.h"
#include "opencv2/opencv.hpp"
#include "twain.h"
GScan200::GScan200()
{
@ -59,7 +60,7 @@ bool GScan200::is_scan()
BOOL GScan200::Get_Scanner_PaperOn()
{
return 0;
return m_dev->get_option(Cam_Options::scanner_paper_have);
}
void GScan200::config_params(SFreeImage& params)
@ -83,7 +84,7 @@ void GScan200::ResetScanner()
bool GScan200::Get_IsImageQueueEmpty()
{
return false;
return m_pImages.empty();
}
void GScan200::reset()
@ -92,6 +93,7 @@ void GScan200::reset()
void GScan200::setdecodepixtype(int twpixtype)
{
pixType = (twpixtype == TWPT_RGB) ? TJPF_BGR : TJPF_GRAY;
}
UINT32 GScan200::get_ErrorCode()
@ -116,5 +118,5 @@ void GScan200::image_call(void* fdata, int fsize, void* bdata, int bsize)
std::vector<cv::Mat> mats;
mats.push_back(fmat.clone());
mats.push_back(bmat.clone());
m_pImages.pushMat(JpegBuffer(mats));
m_pImages.pushMat(JpegBuffer(mats, pixType, 0));
}

View File

@ -23,7 +23,6 @@ void CImageAdjustColors::apply(cv::Mat& pDib,int side)
{
if (m_fBrightness != 0|| m_fContrast != 0|| m_fGamma != 1.0)
{
//MessageBox(NULL,"Inter","Error",MB_OK);
//FileTools::write_log("D:\\1.txt", "Enter CImageAdjustColors apply");
cv::LUT(pDib, lut, pDib);
//FileTools::write_log("D:\\1.txt", "Exit CImageAdjustColors apply");

View File

@ -18,14 +18,6 @@ ImageMatQueue::ImageMatQueue(void)
m_threadProc = NULL;
at_prced_image_remains = 0;
atm_orgin_image_remains = 0;
if (m_threadProc)
{
bRun = false;
at_prced_image_remains = 0;
atm_orgin_image_remains = 0;
m_threadProc->join();
m_threadProc = NULL;
}
bRun = true;
at_prced_image_remains = 0;
atm_orgin_image_remains = 0;
@ -34,15 +26,13 @@ ImageMatQueue::ImageMatQueue(void)
void ImageMatQueue::run()
{
}
ImageMatQueue::~ImageMatQueue(void)
{
m_pImages.ShutDown();
m_images.ShutDown();
if (m_threadProc)
{
if (m_threadProc) {
bRun = false;
at_prced_image_remains = 0;
atm_orgin_image_remains = 0;
@ -84,9 +74,8 @@ void ImageMatQueue::setparam(SFreeImage param)
scanParam = param;
m_iaList.clear();
if (param.m_bAutoDiscardBlank || param.m_bAutoDiscardBlankInvoice)
{
m_iaList.push_back(shared_ptr<CImageApply>(new CImageProcDiscardBlank(param.m_bAutoDiscardBlank ? true : false)));
}
bool m_bAutoCrop = false;
if (param.m_HardWareParams.PaperType == 90)
m_bAutoCrop = true;
@ -94,23 +83,16 @@ void ImageMatQueue::setparam(SFreeImage param)
m_iaList.push_back(shared_ptr<CImageApply>(new CAutoCrop(param.m_bFillBlackRect, param.m_bAutoDeskew, param.m_bAutoCrop, papersize.GetPaperSize(param.m_HardWareParams.PaperType, param.m_fXResolution), papersize.GetPaperSize(param.m_HardWareParams.PaperType, 200.0), param.m_nPixelType)));
if (param.m_nFilter)
{
m_iaList.push_back(shared_ptr<CImageApply>(new CImageChannel(param.m_nFilter)));
}
if (param.m_fBrightness != 0 || param.m_fContrast != 0 || param.m_fGamma != 1.0)
{
m_iaList.push_back(shared_ptr<CImageApply>(new CImageAdjustColors(param.m_fBrightness, param.m_fContrast, param.m_fGamma)));
}
if (param.m_fXResolution != 200.0)
{
m_iaList.push_back(shared_ptr< CImageApply>(new CImageApplyResize(200.0, param.m_fXResolution, param.m_bAutoCrop, papersize.GetPaperSize(param.m_HardWareParams.PaperType, param.m_fXResolution))));
}
if (param.m_wRotation != 0 || param.m_bBackRotate180)
{
m_iaList.push_back(shared_ptr<CImageApply>(new CImageRotation(param.m_wRotation, param.m_bBackRotate180)));
}
}
cv::Mat ImageMatQueue::_popMat()
@ -139,8 +121,7 @@ void ImageMatQueue::SetScanningStatus(bool isscannning)
void ImageMatQueue::release_img_prc_thread()
{
if (m_threadProc)
{
if (m_threadProc) {
bRun = false;
at_prced_image_remains = 0;
atm_orgin_image_remains = 0;
@ -158,31 +139,19 @@ bool ImageMatQueue::empty()
void ImageMatQueue::proc()
{
JpegBuffer jb;
while (bRun)
{
while (bRun) {
jb = m_pImages.Take();
// if (m_pImages.Size() != 0)//m_images.Size() == 0 &&
if (!m_pImages.IsShutDown() && !jb.empty())
{
if (!m_pImages.IsShutDown() && !jb.empty()) {
vector<cv::Mat> mats = jb.getMats();
if (scanParam.m_OutHole.EnOutHole && mats.size() == 2)//确保能够获取正反两面图
{
ImageOutHole outhole;
if (scanParam.m_OutHole.EnOutHole && mats.size() == 2){ //确保能够获取正反两面图
if (!mats[0].empty() && !mats[1].empty())
{
outhole.puncture(mats[0], mats[1], 50.0, scanParam.m_OutHole.OutHoleRatio / 100.0, 50);
}
ImageOutHole().puncture(mats[0], mats[1], 50.0, scanParam.m_OutHole.OutHoleRatio / 100.0, 50);
}
for (int i = 0; i < mats.size(); i++)
{
if (!mats[i].empty())
{
for (int j = 0; j < m_iaList.size(); j++)
{
for (int i = 0; i < mats.size(); i++) {
if (!mats[i].empty()) {
for (int j = 0; j < m_iaList.size(); j++) {
if (mats[i].empty())//ÌÞ³ý¿Õ°×Ò³
break;
@ -191,18 +160,14 @@ void ImageMatQueue::proc()
}
}
for (int i = 0; i < mats.size(); i++)
{
if (!scanParam.m_bDuplex && i == 1)
{
for (int i = 0; i < mats.size(); i++) {
if (!scanParam.m_bDuplex && i == 1) {
mats[i].release();
break;
}
if (!mats[i].empty())
{
EnqueueMat(mats[i]);
}
}
if (scanParam.m_bMultiOutput)
@ -211,22 +176,19 @@ void ImageMatQueue::proc()
{
ImageMultiOutput m_mlt;
Mat m_filterMat = m_mlt.GetMultiFilterMat(mats[i], 2);
if (!m_filterMat.empty())
{
if (!scanParam.m_bDuplex && i == 1)
{
if (!m_filterMat.empty()) {
if (!scanParam.m_bDuplex && i == 1) {
mats[i].release();
break;
}
if (!m_filterMat.empty())
{
EnqueueMat(m_filterMat);
}
}
}
}
PaniusCount();
}
jb = JpegBuffer();
}
}

View File

@ -19,8 +19,7 @@ public:
static void write_log(std::string filename, std::string log)
{
//#ifdef DEBUG
char deskpatrh[255];
char deskpatrh[_MAX_PATH];
std::string savepath;
SHGetSpecialFolderPath(0, deskpatrh, CSIDL_DESKTOPDIRECTORY, 0);
std::string str(deskpatrh);
@ -31,10 +30,6 @@ public:
SYSTEMTIME sys;
GetLocalTime(&sys);
ofs << sys.wYear << "/" << sys.wMonth << "/" << sys.wDay << " " << sys.wHour << ":" << sys.wMinute << ":" << sys.wSecond << ":" << sys.wMilliseconds << " " << log << std::endl;
//#else
//#endif
}
private:

Binary file not shown.