采集流程已经正常
This commit is contained in:
parent
4de9aefeac
commit
ff44b7b7ba
|
@ -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() :
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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:
|
||||
|
|
BIN
hugaotwainds.aps
BIN
hugaotwainds.aps
Binary file not shown.
Loading…
Reference in New Issue