技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > ZBasic結(jié)合Qt實(shí)現(xiàn)機(jī)器視覺數(shù)字識(shí)別

ZBasic結(jié)合Qt實(shí)現(xiàn)機(jī)器視覺數(shù)字識(shí)別

時(shí)間:2021-06-08 14:46:23來源:深圳市正運(yùn)動(dòng)技術(shù)有限公司

導(dǎo)語:?



上期課程我們和大家分享了QT調(diào)用ZBasic語言的方法,即調(diào)用ZBasic語言封裝的C++動(dòng)態(tài)鏈接庫,并實(shí)現(xiàn)機(jī)器視覺圖像采集功能。

本次課程我們將在上期課程的程序基礎(chǔ)上,實(shí)現(xiàn)機(jī)器視覺數(shù)字識(shí)別的檢測(cè)功能。

檢測(cè)原理

1.png

軟件實(shí)現(xiàn)

(一)準(zhǔn)備

2.png

(二)實(shí)例演示

1.打開ZDevelop軟件,打開上次課程使用到的圖像采集項(xiàng)目,添加使用到的全局變量,添加【測(cè)試】功能子程序、【連續(xù)運(yùn)行】子程序、【停止運(yùn)行】子程序。(此部分的basic指令可在下方的百度云盤鏈接獲取,這里不做展示)

2.打開QTCreator軟件,點(diǎn)擊“Open Project”,在指定路徑下找到上次課程的項(xiàng)目文件“QT_ZVision_1”并打開項(xiàng)目。

3.在“mainwindow.cpp”文件中增加定義程序中使用到的全局變量。

int flag=0;

ZMC_HANDLE g_handle;

int Times=0;

uint8 zv0_pBuff[520*390*2]={0};//鎖存0緩存大小

int ContinuousGetImgFlag=0;     //連續(xù)采集標(biāo)志

int ContinuousRunFlag=0;     //連續(xù)運(yùn)行標(biāo)志

4.補(bǔ)充設(shè)計(jì)UI界面。

3.png

5.添加界面初始化代碼。

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

    //ui->ZV0->setText(""); //清空字體

    //ui->ZV0->setStyleSheet("QLabel{background-color:rgb(0, 0, 100);}");  //設(shè)置樣式表

    ui->select_mode->addItem("手動(dòng)閾值",0);

    ui->select_mode->addItem("自動(dòng)閾值",1);

    ui->ExposureValue->setText("5000");

    UpZV_0.start(20);//20ms定時(shí)判斷采集并顯示圖像

    connect(&UpZV_0, SIGNAL(timeout()), this, SLOT(UpZV_0show()));

}

6.添加【測(cè)試】槽函數(shù):選擇【測(cè)試】按鈕,右擊彈出快捷菜單欄,選擇“轉(zhuǎn)到槽”選項(xiàng)→彈出“轉(zhuǎn)到槽”窗口,選擇對(duì)應(yīng)的信號(hào)源“clicked()”,點(diǎn)擊“OK”確認(rèn),即可完成槽函數(shù)的定義和聲明→在槽函數(shù)的聲明函數(shù)中添加函數(shù)實(shí)現(xiàn)的具體代碼內(nèi)容。

//單次執(zhí)行函數(shù)

void MainWindow::on_execute_once_clicked()

{

    int32 iresult;

    //將QT界面設(shè)置的參數(shù)寫入控制器對(duì)應(yīng)變量中

    int mode,low_thresh,high_thresh,min_area,max_area;

    mode=ui->select_mode->currentIndex();

    ZAux_Direct_SetVariableInt(g_handle,"d_detect_param(0)",mode);

    low_thresh=ui->low_thresh_value->value();

    ZAux_Direct_SetVariableInt(g_handle,"d_detect_param(1)",low_thresh);

    high_thresh=ui->hige_thresh_value->value();

    ZAux_Direct_SetVariableInt(g_handle,"d_detect_param(2)",high_thresh);

    min_area=ui->min_area->value();

    ZAux_Direct_SetVariableInt(g_handle,"d_detect_param(3)",min_area);

    max_area=ui->max_area->value();

    ZAux_Direct_SetVariableInt(g_handle,"d_detect_param(4)",max_area);

    iresult=ZAux_RunTask(g_handle,0,"btn_test()");//運(yùn)行控制器里面指定的SUB

    if (iresult==0)

    {

         qDebug()<<"run btn_test() success";

    }

    else

    {

         qDebug()<<"run btn_test() fail !!"<<iresult;

    } 

    ZV0_Show();//刷新顯示界面圖像

}

7.添加【連續(xù)運(yùn)行】槽函數(shù):選擇【連續(xù)運(yùn)行】按鈕,右擊彈出快捷菜單欄,選擇“轉(zhuǎn)到槽”選項(xiàng)→彈出“轉(zhuǎn)到槽”窗口,選擇對(duì)應(yīng)的信號(hào)源“clicked()”,點(diǎn)擊“OK”確認(rèn),即可完成槽函數(shù)的定義和聲明→在槽函數(shù)的聲明函數(shù)中添加函數(shù)實(shí)現(xiàn)的具體代碼內(nèi)容。

//連續(xù)運(yùn)行

void MainWindow::on_run_clicked()

{

    int32 iresult;

    iresult=ZAux_RunTask(g_handle,0,"btn_run()");//運(yùn)行控制器里面指定的SUB

    if (iresult==0)

    {

         qDebug()<<"run btn_run() success";

    }


    else

    {

         qDebug()<<"run btn_run() fail !!"<<iresult;

    }

     ContinuousRunFlag=1;//連續(xù)運(yùn)行標(biāo)志置1

}

8.添加定時(shí)刷新函數(shù):在“mainwindow.h”文件中定義“QTimer Uprun_0”定時(shí)器變量→在界面初始化函數(shù)中添加定時(shí)器觸發(fā)條件和信號(hào)與槽連接函數(shù)→添加定時(shí)檢測(cè)識(shí)別骰子點(diǎn)數(shù)的定義和聲明函數(shù),并在聲明函數(shù)中添加具體的實(shí)現(xiàn)代碼內(nèi)容。

private:

    Ui::MainWindow *ui;

    QPixmap fPixmap;

    QTimer UpZV_0;

    QTimer Uprun_0;

    MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

    //ui->ZV0->setText(""); //清空字體

    //ui->ZV0->setStyleSheet("QLabel{background-color:rgb(0, 0, 100);}");  //設(shè)置樣式表

    ui->select_mode->addItem("手動(dòng)閾值",0);

    ui->select_mode->addItem("自動(dòng)閾值",1);

    ui->ExposureValue->setText("5000");

    UpZV_0.start(20);//20ms定時(shí)判斷采集并顯示圖像

    connect(&UpZV_0, SIGNAL(timeout()), this, SLOT(UpZV_0show()));

    Uprun_0.start(200);//200ms定時(shí)判斷采集并顯示圖像

    connect(&Uprun_0, SIGNAL(timeout()), this, SLOT(Uprun_show()));

}


//定時(shí)器開啟連續(xù)運(yùn)行

void MainWindow::Uprun_show()

{

   if(1 == ContinuousRunFlag)

   {

       ZV0_Show();

   }

}

9.添加【停止運(yùn)行】槽函數(shù):選擇【停止運(yùn)行】按鈕,右擊彈出快捷菜單欄,選擇“轉(zhuǎn)到槽”選項(xiàng)→彈出“轉(zhuǎn)到槽”窗口,選擇對(duì)應(yīng)的信號(hào)源“clicked()”,點(diǎn)擊“OK”確認(rèn),即可完成槽函數(shù)的定義和聲明→在槽函數(shù)的聲明函數(shù)中添加函數(shù)實(shí)現(xiàn)的具體代碼內(nèi)容。

//停止運(yùn)行

void MainWindow::on_stop_clicked()

{

    int32 iresult;

    iresult=ZAux_RunTask(g_handle,0,"btn_stop()");//運(yùn)行控制器里面指定的SUB

    if (iresult==0)

    {

         qDebug()<<"run btn_stop() success";

    }

    else

    {

         qDebug()<<"run btn_stop() fail !!"<<iresult;

    }

    ContinuousRunFlag=0;//連續(xù)運(yùn)行標(biāo)志置0

}

10.查看運(yùn)行效果:將控制器接入電源,使用網(wǎng)線將控制器與PC連接,將相機(jī)通電并接入控制器→使用ZDevelop軟件打開ZBasic自動(dòng)識(shí)別骰子點(diǎn)數(shù)的項(xiàng)目文件,將該項(xiàng)目下載到控制器→運(yùn)行QT程序,并連接到控制器,進(jìn)行對(duì)應(yīng)采集操作。

完整代碼獲取地址

4.png

本次,正運(yùn)動(dòng)技術(shù)ZBasic結(jié)合Qt實(shí)現(xiàn)機(jī)器視覺數(shù)字識(shí)別就分享到這里。

更多精彩內(nèi)容請(qǐng)關(guān)注“正運(yùn)動(dòng)小助手”公眾號(hào),需要相關(guān)開發(fā)環(huán)境與例程代碼,請(qǐng)咨詢正運(yùn)動(dòng)技術(shù)銷售工程師:400-089-8936


本文由正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請(qǐng)注明文章來源。



回顧往期內(nèi)容


ZBasic結(jié)合Qt實(shí)現(xiàn)機(jī)器視覺圖像采集

會(huì)PLC也能玩轉(zhuǎn)機(jī)器視覺(二)識(shí)別條形碼
會(huì)PLC也能玩轉(zhuǎn)機(jī)器視覺(一)BLOB計(jì)數(shù)功能
機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)應(yīng)用例程(三) 基于BLOB分析的多圓定位
機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)應(yīng)用例程(二) 顏色識(shí)別
機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)應(yīng)用例程(一) 多目標(biāo)形狀匹配

VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(十)OCR功能
VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(九)劃痕檢測(cè)
VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(八)測(cè)量點(diǎn)/線/圓
VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(七)識(shí)別功能
VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(六)標(biāo)定功能

VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(五)尺寸測(cè)量

VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(四)BLOB有無檢測(cè)

VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(三)基于形狀匹配的視覺定位

VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(二)相機(jī)的基本使用

VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(一)軟硬件介紹及計(jì)數(shù)實(shí)例


正運(yùn)動(dòng)技術(shù)XPLC516E 的開放式Linux 平臺(tái)使用(上)

正運(yùn)動(dòng)技術(shù)XPLC516E 的開放式Linux 平臺(tái)使用(下)



關(guān)于正運(yùn)動(dòng)技術(shù)



正運(yùn)動(dòng)技術(shù)專注于運(yùn)動(dòng)控制技術(shù)研究和通用運(yùn)動(dòng)控制軟硬件產(chǎn)品的研發(fā),是國家級(jí)高新技術(shù)企業(yè),主要產(chǎn)品有運(yùn)動(dòng)控制器、運(yùn)動(dòng)控制卡、視覺運(yùn)動(dòng)控制一體機(jī)、人機(jī)界面以及擴(kuò)展模塊等。

正運(yùn)動(dòng)技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時(shí),積極聯(lián)合各大高校協(xié)同運(yùn)動(dòng)控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動(dòng)控制核心技術(shù)和實(shí)時(shí)工控軟件平臺(tái)技術(shù)的企業(yè)。 



5.png



標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:移動(dòng)機(jī)器人領(lǐng)域內(nèi)單線激光雷...

下一篇:【金升陽】基于市場(chǎng)需求的技...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)