二维码生成原理没有精力去研究,发现有可以用的轮子,就不重复造轮子了,站在巨人的肩膀上做事。参考了一大堆博客,忘记了他们的链接,没有能补上,抱歉。
需要用到的库:
1、opencv
2、qrencode,已经编译好了,下载:链接: https://pan.baidu.com/s/1_eUhkdEGvs9XiVNyy52DzA 提取码: w1xi
里面好像也有opencv编译好的库,没有就发邮件给我:[email protected]
步骤:
1、直接调用:QRcode_encodeString,传入参数
QRcode * code = QRcode_encodeString(src.c_str(), 0, QR_ECLEVEL_H, QR_MODE_8, 1);
2、返回的数据用opencv生成图片,qrencode可以生成png图片,但是需要配置zlib,麻烦,直接opencv生成
for (int i = 0; i < code->width; ++i) {
for (int j = 0; j < code->width; ++j)
{
img.at<uchar>(i, j) = (code->data[i*code->width + j] & 0x01) == 0x01 ? 0 : 255;
}
}
3、缩放生成的二维码,因为生成的比较小,需要放大,最后那个参数,