mirror of http://192.168.1.51:8099/lmh188/twain3
85 lines
1.9 KiB
C++
85 lines
1.9 KiB
C++
#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
|
|
|