计算机视觉

C++ Zxing opencv识别Data Matrix 二维

2018-07-01  本文已影响0人  刘千予

//zxing

#include "zxing/LuminanceSource.h"

#include "zxing/Reader.h" 

#include "zxing/common/GlobalHistogramBinarizer.h"  

#include "zxing/DecodeHints.h"  

#include "zxing/datamatrix/DataMatrixReader.h"  

#include "zxing/MatSource.h"

#include "zxing/result.h"

#include "zxing/BinaryBitmap.h"

#include "zxing/Binarizer.h"

#include "zxing/Exception.h"

//opencv

#include "opencv2/opencv.hpp"

#include "opencv2/highgui/highgui.hpp"

#include "opencv2/imgproc/imgproc.hpp" 

#include "opencv2/core/core.hpp"

/******************************************************************************************

Function: DataMatrixDecoder

Description: data matrix二维码解析

Input: image_path:二维码图片路径

Return: 解析结果*******************************************************************************************/

std::string DataMatrixDecoder(std::string image_path) 

{

//初始化解析结果

std::string content = "";

//读取图片

cv::Mat matSrc = cv::imread(image_path, 1);

//读取失败则返回

if (!matSrc.data)

 {

fprintf(stderr, "read image error: %s", image_path.c_str());

return content;

try

{

//转化为灰度图

cv::Mat matGray;cv::cvtColor(matSrc, matGray, CV_BGR2GRAY); 

zxing::Refsource = MatSource::create(matGray);

/*int width = source->getWidth();

int height = source->getHeight();

*/

/*fprintf(stderr, "image width: %d, height: %d\n", width, height);

*/

zxing::Refreader;reader.reset(new zxing::datamatrix::DataMatrixReader);

zxing::Refbinarizer(new zxing::GlobalHistogramBinarizer(source));

zxing::Refbitmap(new zxing::BinaryBitmap(binarizer));

//开始解码

zxing::Ref result(reader->decode(bitmap, zxing::DecodeHints(zxing::DecodeHints::DATA_MATRIX_HINT)));

//获取解析结果

content = result->getText()->getText();

}

catch (zxing::Exception e)

{

}

return content;

}

上一篇下一篇

猜你喜欢

热点阅读