2019-11-14 08:42:24 +00:00
|
|
|
#pragma once
|
|
|
|
//#include <boost\thread\win32\mfc_thread_init.hpp>
|
|
|
|
#include <thread>
|
|
|
|
#include <mutex>
|
|
|
|
#include <opencv2\opencv.hpp>
|
|
|
|
#include "JpegBuffer.h"
|
|
|
|
#include <queue>
|
|
|
|
#include "ImageApply.h"
|
|
|
|
#include "PublicFunc.h"
|
|
|
|
#include "BlockingQueue.h"
|
|
|
|
#include <memory>
|
|
|
|
#include <atomic>
|
|
|
|
#include "PaperSize.h"
|
|
|
|
#include "AutoCrop.h"
|
|
|
|
#include "ImageAdjustColors.h"
|
|
|
|
#include "ImageApplyResize.h"
|
|
|
|
#include "ImageChannel.h"
|
|
|
|
#include "ImageProcDiscardBlank.h"
|
|
|
|
#include "ImageRotation.h"
|
2019-12-05 08:08:36 +00:00
|
|
|
#include <memory>
|
2019-11-14 08:42:24 +00:00
|
|
|
|
|
|
|
class ImageMatQueue
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
ImageMatQueue(void);
|
|
|
|
virtual ~ImageMatQueue(void);
|
|
|
|
|
|
|
|
void pushMat(JpegBuffer& data);
|
|
|
|
cv::Mat popMat();
|
|
|
|
bool empty();
|
|
|
|
bool valid();
|
|
|
|
void clear();
|
|
|
|
void setparam(SFreeImage param);
|
|
|
|
void run();
|
|
|
|
public:
|
|
|
|
void SetScanningStatus(bool isscannning);
|
|
|
|
void release_img_prc_thread();
|
|
|
|
private:
|
|
|
|
void proc();
|
|
|
|
cv::Mat _popMat();
|
|
|
|
void EnqueueMat(cv::Mat &mat);
|
|
|
|
void PaniusCount();
|
|
|
|
BlockingQueue<cv::Mat> m_images;
|
|
|
|
BlockingQueue<JpegBuffer> m_pImages;
|
|
|
|
std::mutex m_Locker;
|
|
|
|
std::mutex m_mtxJB;
|
2019-12-05 08:08:36 +00:00
|
|
|
std::unique_ptr<thread> m_threadProc;
|
2019-11-14 08:42:24 +00:00
|
|
|
volatile bool bRun;
|
|
|
|
bool can_multi_outputR;
|
|
|
|
bool isduplex;
|
|
|
|
std::atomic<int> at_prced_image_remains;
|
|
|
|
std::atomic<int> atm_orgin_image_remains;
|
|
|
|
SFreeImage scanParam;
|
|
|
|
bool iscanning;
|
|
|
|
PaperSize papersize;
|
|
|
|
std::vector<std::shared_ptr<CImageApply>> m_iaList;
|
|
|
|
};
|
|
|
|
|