twain3/ImageProcess/ImageApplyBarCodeRecognition.h

85 lines
1.9 KiB
C
Raw Permalink Normal View History

#ifndef IMAGE_APPLY_BAR_CODE_RECOGNITION_H
#define IMAGE_APPLY_BAR_CODE_RECOGNITION_H
#include "ImageApply.h"
class CImageApplyBarCodeRecognition : public CImageApply
{
public:
enum class RecognizeMode
{
Single = 0,
Multi
};
enum class Direction
{
Horizontal,
Vertical
};
enum BarCodeType
{
ThreeOfNine = 0,
ThreeOfFiveInterleaved = 1,
ThreeOfFiveNonInterleaved = 2,
Code93 = 3,
Code128 = 4,
Ucc128 = 5,
CodaBar = 6,
Upca = 7,
Upce = 8,
Ean8 = 9,
Ean13 = 10,
Postnet = 11,
Pdf417 = 12,
TwoOfFiveIndustrial = 13,
TwoOfFiveMatrix = 14,
TwoOfFiveDatalogic = 15,
TwoOfFiveIata = 16,
ThreeOfNineFullAscii = 17,
CodaBarWithStartStop = 18,
MaxiCode = 19,
QrCode = 20
};
typedef struct BarCode_Info
{
int barCodeType;
int barCodeLength;
std::string barCodeText;
int barCodeX;
int barCodeY;
int barCodeRotation;
int barCdeConfidence;
}BarCodeInfo;
public:
CImageApplyBarCodeRecognition();
CImageApplyBarCodeRecognition(RecognizeMode mode, Direction dir);
virtual ~CImageApplyBarCodeRecognition(void);
virtual void apply(cv::Mat& pDib, int side);
inline BarCodeInfo result() { return m_result; }
inline std::vector<BarCodeInfo> results() { return m_vector_result; }
private:
int recognize_ZXing(const cv::Mat& image, BarCodeInfo& result);
int recognize_Zbar(const cv::Mat& image, BarCodeInfo& result);
void decode(cv::Mat& image, BarCodeInfo& result);
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide) {}
private:
RecognizeMode m_mode;
Direction m_direction;
BarCodeInfo m_result;
std::vector<BarCodeInfo> m_vector_result;
};
#endif // IMAGE_APPLY_BAR_CODE_RECOGNITION_H