windows
- Zbar 执行程序官网下载地址,点击左边即可。
- 安装: 按照普通的程序点击下一步即可,记录好安装的位置。
- 配置环境变量。 下面是我配置的位置。直接按照默认安装的。
- 尝试在左下角最近安装程序点击zbarcam 程序,这里就可以用笔记本测试扫码并识别。
这里就将二维码放入笔记本的摄像头就可以进行识别了,人丑手动打码~~
5. 高能预警, 现在的电脑基本都是64位的,但是在官网下载的程序安装后只能够32位的电脑去二次开发,所以现在需要做下面的步骤。
需要从 这个网址上下载 https://github.com/dani4/ZBarWin64 下载压缩包,并解压。 如果下载的网速慢,可以参考我后面的给的安装包。 全套。
(1)将 ZBarWin64-master\lib 文件夹下的 libzbar64-0.lib 文件复制到ZBar安装路径下的 lib 文件夹中,
(2)将 ZBarWin64-master\lib 文件夹下的 libzbar64-0.dll 文件复制到ZBar安装路径下的 bin 文件夹中,
(3)将 ZBarWin64-master\zbar\libiconv\dll_x64 文件夹下的 libiconv.dll 文件复制到ZBar安装路径下的 bin 文件夹中。
- 程序进行测试, 我的开发环境是:
zbar 0.1
opencv 4.5 (安装的配置在我的上一篇blog)
qt5.9
注意 下面的pro文件的zbar 环境的路径,因为有空格,所以必须加上 $$quote
pro文件
INCLUDEPATH += D:\02C++\01QRcode\opencv\build\include \
D:\02C++\01QRcode\opencv\build\include\opencv2 \
$$quote(C:\Program Files (x86)\ZBar\include) \
LIBS += D:\02C++\01QRcode\opencv\build\x64\vc14\lib\opencv_world450.lib
LIBS += D:\02C++\01QRcode\opencv\build\x64\vc14\lib\opencv_world450d.lib
LIBS += $$quote(C:\Program Files (x86)\ZBar\lib\libzbar64-0.lib)
void MainWindow::test()
{
QString path = "xxx\\xxxx\\xx.png";
Mat image = imread(path.toStdString());
if(!image.data)
{
QMessageBox::information(this, tr("打开图像失败"),tr("打开图像失败!"));
return;
}
QImage img = Mat2QImage(image);
qDebug() << "ZBar Mat pic start decode.====" ;
qDebug() << "img format is == " << img.format() ; // Format_RGB32=4, Format_ARGB32=5
Mat imageGray;
cvtColor(image, imageGray, CV_RGB2GRAY);
int width = imageGray.cols;
int height = imageGray.rows;
uchar* raw = (uchar*)imageGray.data;
//Image imageZbar(width, height, "Y800", raw, width*height);
Image imageZbar(width, height, "Y800", raw, width*height);
scanner.scan(imageZbar);
Image::SymbolIterator symbol = imageZbar.symbol_begin();
if(imageZbar.symbol_begin() == imageZbar.symbol_end())
{
qDebug() << "查询条码失败, 请检查图片!" ;
}
for(; symbol != imageZbar.symbol_end() ; ++symbol)
{
//cout << "ZBar decode type = " << symbol->get_type_name() << endl;;
//cout << "ZBar decode content = " << symbol->get_data() << endl;
qDebug() << "type : " << endl << QString::fromStdString(symbol->get_type_name()) << endl << endl;
qDebug() << "QRCode :" << endl << QString::fromStdString(symbol->get_data()) << endl << endl;
}
//imshow("Source QR", image);
//waitKey(0);
imageZbar.set_data(NULL, 0); /// 清楚缓存
}
Linux(ubuntu)
linux 中相比windows 是比较简单的。看下面的步骤。
到这里就已经结束了!!!
上面所有资料的打包,给大家在这个文件夹下。