mirror of http://192.168.1.51:8099/lmh188/twain3
73 lines
1.7 KiB
C
73 lines
1.7 KiB
C
|
#pragma once
|
||
|
#include <thread>
|
||
|
#include <mutex>
|
||
|
#include <opencv2/opencv.hpp>
|
||
|
#include "ImageApplyHeaders.h"
|
||
|
#include "BlockingQueue.h"
|
||
|
#include <memory>
|
||
|
#include "PaperSize.h"
|
||
|
#include "GScan.h"
|
||
|
#include "IMulti.h"
|
||
|
#include "MatEx.h"
|
||
|
|
||
|
|
||
|
|
||
|
class IDecode {
|
||
|
public:
|
||
|
virtual ~IDecode() {}
|
||
|
virtual std::vector<std::shared_ptr<std::vector<char>>> getImageBuffs() {
|
||
|
return m_buffs;
|
||
|
}
|
||
|
protected:
|
||
|
std::vector<std::shared_ptr<std::vector<char>>> m_buffs;
|
||
|
};
|
||
|
|
||
|
class G200Decode : public IDecode{
|
||
|
public:
|
||
|
G200Decode(std::shared_ptr<std::vector<char>> buff);
|
||
|
};
|
||
|
|
||
|
class GRawDecode : public IDecode {
|
||
|
public:
|
||
|
GRawDecode(std::shared_ptr<std::vector<char>> buff);
|
||
|
};
|
||
|
|
||
|
|
||
|
class ImageMatQueue
|
||
|
{
|
||
|
public:
|
||
|
ImageMatQueue(void);
|
||
|
virtual ~ImageMatQueue(void);
|
||
|
bool empty();
|
||
|
bool valid();
|
||
|
void clear();
|
||
|
void setparam(GScanCap& param);
|
||
|
void run();
|
||
|
void setscanflags(const bool flags) { is_scanning = flags; }
|
||
|
void pushMat(std::shared_ptr<IDecode> buf);
|
||
|
MatEx popimage();
|
||
|
void get_image_front_info(ImageInfo* info);
|
||
|
volatile int mode=0;
|
||
|
|
||
|
|
||
|
private:
|
||
|
void proc();
|
||
|
void EnqueueCheck(bool multiout_red, int s, std::vector<cv::Mat>& retmats);
|
||
|
void PaniusCount();
|
||
|
void EnqueueMat(cv::Mat& mat);
|
||
|
void EnqueueMatOutPut(MatEx& matoutput);
|
||
|
BlockingQueue<MatEx> m_imagedata;
|
||
|
std::mutex m_Locker;
|
||
|
std::mutex m_mtxJB;
|
||
|
std::unique_ptr<std::thread> m_threadProc;
|
||
|
volatile bool bRun;
|
||
|
volatile int atm_orgin_image_remains;
|
||
|
volatile bool is_scanning;
|
||
|
GScanCap scanParam;
|
||
|
Device::PaperSize papersize;
|
||
|
std::vector<std::shared_ptr<CImageApply>> m_iaList;
|
||
|
std::vector<std::shared_ptr<IMulti>> m_multiprc_list;
|
||
|
BlockingQueue<std::shared_ptr<IDecode>> m_rawBuffs;
|
||
|
};
|
||
|
|