当前位置: 首页 > article >正文

zbar 二维码译码算法获取译码后的二维码位置并在QT画出轮廓

1.获取二维码位置坐标,四个点:
int main(void) {
    Mat mat = imread("E:\\qrcodetest.jpg");
    zbar::ImageScanner scnner;
    scnner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1);
    cvtColor(mat, mat, COLOR_BGR2GRAY);
    zbar::Image imageZbar(mat.cols, mat.rows, "Y800", (uchar *)mat.data, mat.cols * mat.rows);
    scnner.scan(imageZbar);
    SymbolIterator symbol = imageZbar.symbol_begin();
    if (imageZbar.symbol_begin() != imageZbar.symbol_end()) {
        //图中有二维码
        SymbolIterator iter = imageZbar.symbol_begin();
        //iter->get_location_size(): 二维码矩形有几个点,一般都是4个,也就是二维码一般都是方形的
        cout << iter->get_location_size() << endl;
        for (int i = 0; i < iter->get_location_size();i ++) {
            //获取第i个点的x
            cout << iter->get_location_x(i) << endl;
            //获取第i个点的y
            cout << iter->get_location_y(i) << endl;
        }
    }

    getc(stdin);
    return 0;
}

2. QT 画轮廓线:

static const QPointF points[4] = {QPointF(30, 40), QPointF(60, 150), QPointF(150, 160), QPointF(220, 100)};

painter.drawPolygon(points, 4);

#include <QWidget>
#include <QPainter>
#include <QPolygon>
 
class PolygonWidget : public QWidget {
protected:
    void paintEvent(QPaintEvent *event) override {
        QPainter painter(this);
        painter.setBrush(Qt::blue); // 设置填充颜色为蓝色
        painter.setPen(Qt::NoPen); // 不绘制边框
 
        QPolygon polygon;
        polygon << QPoint(10, 10) << QPoint(100, 10) << QPoint(50, 90); // 定义多边形的顶点
        painter.drawPolygon(polygon); // 绘制多边形
    }
};


http://www.kler.cn/a/573546.html

相关文章:

  • Ubuntu22.04安装Ollama部署DeepSeek-R1:32B模型
  • 使用jacob进行word操作
  • Mysql安装方式
  • FastGPT 源码解析:混合检索与存储方案
  • GC Root
  • 如何修改电脑mac地址?
  • 7.1.2 计算机网络的分类
  • 【开源免费】基于SpringBoot+Vue.JS疫情管理系统(JAVA毕业设计)
  • 【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Servlet 与 JSP 的协作:MVC 模式的雏形
  • 【网络协议】应用层协议HTTPS
  • 如何隐藏网站IP,隐藏网站IP有什么好处
  • 文件包含漏洞学习笔记
  • Spring Cloud LoadBalancer详解
  • 康谋分享 | 3DGS:革新自动驾驶仿真场景重建的关键技术
  • 电脑技巧:硬件检测工具 HWiNFO 8.16版本更新功能介绍
  • 在 Rust 中实现面向对象的状态模式
  • 【JavaSE-5】程序逻辑控制相关练习题
  • C/C++通过SQLiteSDK增删改查
  • 银河升级成品牌,吉利发布更安全的千里浩瀚智驾
  • Android车机DIY开发之软件篇(二十)立创泰山派android编译