zoukankan      html  css  js  c++  java
  • VS2010+OpenCV3.4.1+zbar 64位

    1. OpenCV3.4.1和zbar文件夹放到指定的路径下,我把它们放在了”D:二维码环境“中。

    zbar:链接:https://pan.baidu.com/s/11eCDVHVA_R7ktQaX_l6gww 密码:ubzj

    OpenCV3.4.1:链接:https://pan.baidu.com/s/1OVbLeG6qJ9aNqdF4UnFFLg 密码:460q

    2. 环境变量配置:

    右键“此电脑”——属性——高级系统设置——环境变量。

    在系统变量中找到“Path”,编辑。

    新建两个环境变量

    D:二维码环境opencv3.4.1uildx64vc14in

    D:二维码环境Barin

    3. 在VS2010中新建项目。选择C++——Win32——Win32控制台应用程序,在附加选项中选择空项目。

    4. 生成的项目中,在解决方案资源管理器中,右键解决方案——属性。配置属性——配置,配置选活动(Debug),平台选活动(x64)。

    5. 视图——其他窗口——属性管理器。

    6. 配置属性:

    双击项目名——配置属性——VC++目录,在包含目录中加入:

    D:二维码环境Barinclude

    D:二维码环境opencv3.4.1uildincludeopencv2

    D:二维码环境opencv3.4.1uildincludeopencv

    D:二维码环境opencv3.4.1uildinclude

    在库目录中加入:

    D:二维码环境Barlib

    D:二维码环境opencv3.4.1uildx64vc14lib

    链接器——输入,在附加依赖项中加入:

    opencv_world341d.lib

    libzbar-0.lib

    libzbar64-0.lib

    测试代码如下,直接选择二维码图片识别,二维码是一个QRCODE,如果一幅图片上有多个二维码,也可以识别出来。该程序在网盘中,图片识别二维码。

    图片识别二维码工程:链接:https://pan.baidu.com/s/1Bd-JJDarvc2yvXYQuwKPeA 密码:dyzz

    #include "opencv2/opencv.hpp"
    #include "zbar.h"
    #include "cv.h"
    #include "highgui.h"
    #include <iostream>
    
    using namespace std;
    using namespace zbar;
    using namespace cv;
    
    int main(int argc, char** argv)
    {
        zbar::ImageScanner scanner;
        scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
        string fileName="E:\QR_CODE.bmp";
        Mat image = imread(fileName);
        double start=clock();
        if (!image.data)
        {
            cout << "请确认图片" << endl;
            system("pause");
            return 0;
        }
        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);
        scanner.scan(imageZbar); //扫描条码
        Image::SymbolIterator symbol = imageZbar.symbol_begin();
        if (imageZbar.symbol_begin() == imageZbar.symbol_end())
        {
            cout << "查询条码失败,请检查图片!" << endl;
        }
        for (; symbol != imageZbar.symbol_end(); ++symbol)
        {
            cout << "类型:" << endl << symbol->get_type_name() << endl << endl;
            cout << "条码:" << endl << symbol->get_data() << endl << endl;
            string s=symbol->get_data();
        }
        double end=clock();
        double ts=end-start;
        cout<<ts<<endl;
    
        imshow("Source Image", image);
        waitKey();
        imageZbar.set_data(NULL, 0);
        system("pause");
    
        return 0;
    }

    调用摄像头代码: 

    摄像头识别二维码工程:链接:https://pan.baidu.com/s/1nyl6Hj6nI9fy4rNt3I-PDA 密码:6rur

    #include <opencv2/highgui/highgui.hpp>  
    #include <opencv2/imgproc/imgproc.hpp>  
    #include <opencv2/core/core.hpp> 
    
    using namespace cv;
    
    int main(int argc, char** argv)
    {
        VideoCapture cap(0);//0-前置摄像头,1-后置
        Mat frame;
    
        while (1)
        {
            cap >> frame;
            imshow("调用摄像头", frame);
            waitKey(1);
        }
        return 0;
    }

    用frame代替上例中的image就可以用摄像头扫描二维码了。

  • 相关阅读:
    如何进入高效学习状态
    shell printf命令:格式化输出语句
    C# virtual、abstract
    git解决Could not execute editor
    go defer笔记
    git从其他分支提取文件merge到当前分支
    golang map
    状态模式
    golang单例模式
    go 单元测试时读取配置文件
  • 原文地址:https://www.cnblogs.com/gloria-zhang/p/9011776.html
Copyright © 2011-2022 走看看