基于深度学习(HyperLPR3框架)的中文车牌识别系统-Qt调用Python

本篇主要内容为Qt与Python混合编程:Qt应用程序中将图片数据传给Python;在Python程序中进行识别处理;Python程序将识别结果返回给Qt应用程序使用。

1、Qt应用程序中根据图片路径,通过OpenCV读取图片数据,然后将图片数据传递给Python接口。如果连接的是摄像头,则将摄像头获取到的视频帧传递给Python接口。

主要代码如下:

cpp 复制代码
    cv::Mat image = cv::imread(strFilename.toStdString());
    ......

    // 要调用的python文件名
    PyObject *pModule = PyImport_ImportModule("common");
    if (!pModule)
    {
        qDebug("Can't find your common.py file.");
        return nullptr;
    }

    //获取模块中的函数
    PyObject *pFunc = PyObject_GetAttrString(pModule, "recognize_image");
    if (!pFunc)
    {
        qDebug("failed PyObject_GetAttrString().");
        return nullptr;
    }


    // 准备输入参数
    PyObject *pArg = PyTuple_New(1);
    int nChannel = image.channels();
    npy_intp dims[3] = {image.rows, image.cols, nChannel};
    PyObject* pValue = PyArray_SimpleNewFromData(nChannel, dims, NPY_UBYTE, image.data);
    if(pValue == NULL)
    {
        qDebug("pValue == NULL");
    }
    PyTuple_SetItem(pArg, 0, pValue);

    //调用函数,并传递参数
    PyObject *py_result = PyEval_CallObject(pFunc, pArg);

py_result接收Python识别的结果数据,通过解析py_result,可以得到识别的车牌字符串和车牌位置等信息。在Qt应用程序中可以将这些数据进行持久化处理,或者与其他应用进行融合,构建复杂的应用系统。

相关推荐
曾几何时`9 分钟前
Go(四)Channel
开发语言·后端·golang
未若君雅裁16 分钟前
Java 线程基础:进程、线程、并发并行、创建方式与生命周期
java·开发语言
sugar__salt19 分钟前
JS正则表达式与字符串高阶实战精讲
开发语言·javascript·正则表达式
AI浩22 分钟前
梯度累积与 Micro-Batch 设计分层式精讲:有效批次、显存边界与分布式同步
开发语言·分布式·batch
未若君雅裁25 分钟前
死锁产生条件与诊断:jps、jstack、VisualVM
java·开发语言
再玩一会儿看代码25 分钟前
Java抽象类和接口区别_场景理解
java·开发语言·经验分享·笔记·python
于先生吖33 分钟前
Java消息队列优化抢单逻辑,同城搬家拉货多场景业务数据库架构设计
java·开发语言·数据库架构
半个烧饼不加肉33 分钟前
JS 底层探究--执行上下文
开发语言·前端·javascript
AI玫瑰助手38 分钟前
Python函数:global与nonlocal关键字的使用
开发语言·python·信息可视化
不会C语言的男孩39 分钟前
C++ Primer 第16章:模板与泛型编程
开发语言·c++