如何使用Zxing C++解码数据

How to decode data using Zxing C++

本文关键字:解码 数据 C++ Zxing 何使用      更新时间:2023-10-16

我在使用Zxing项目中的C++源代码时遇到了一些问题。我从下载了整个项目https://code.google.com/p/zxing/downloads/list并且只获取了cpp文件(core和cli)。

我只想有一个这样的方法:

decode(byte[] dataToDecode, int widthFrame, int heightFrame)

但我真的不知道该怎么做(我对c++和Zxing项目还很陌生)。

我在网上做了研究,发现http://wiki.ssrrsummerschool.org/doku.php?id=robocup2012:qrcode-cpp示例,这正是我所需要的。

不幸的是,Zxing核心已经改变,现在我遇到了一些问题,因为ArrayRef

有没有一种简单的方法来解码字节数组(RGB)并返回结果字符串?

非常感谢您的帮助,

通过修改BufferBitmapSource类示例解决了问题(http://wiki.ssrrsummerschool.org/doku.php?id=robocup2012:qrcode-cppexample)根据Zxing库2.2。

BufferBitmapSource.hpp:

#include <zxing/LuminanceSource.h>
#include <stdio.h>
#include <stdlib.h>
using namespace zxing; 
namespace qrviddec {
class BufferBitmapSource : public LuminanceSource {
private:
  ArrayRef<char>* buffer;
public:
  BufferBitmapSource(int inWidth, int inHeight, ArrayRef<char> buffer);
  ~BufferBitmapSource(); 
  ArrayRef<char> getRow(int y, ArrayRef<char> row) const;
  ArrayRef<char> getMatrix() const;
}; 
}

BufferBitmapSource.cpp太长了,无法发布,但可以分享给有要求的人。

test.cpp(main)

...
// Convert the buffer to something that the library understands.
ArrayRef<char> data((char*)buffer, width*height);
Ref<LuminanceSource> source (new BufferBitmapSource(width, height, data));
...