技術頻道

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

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

時間:2021-06-08 14:46:23來源:深圳市正運動技術有限公司

導語:?



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

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

檢測原理

1.png

軟件實現(xiàn)

(一)準備

2.png

(二)實例演示

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

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

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ù)采集標志

int ContinuousRunFlag=0;     //連續(xù)運行標志

4.補充設計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);}");  //設置樣式表

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

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

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

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

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

}

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

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

void MainWindow::on_execute_once_clicked()

{

    int32 iresult;

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

    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()");//運行控制器里面指定的SUB

    if (iresult==0)

    {

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

    }

    else

    {

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

    } 

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

}

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

//連續(xù)運行

void MainWindow::on_run_clicked()

{

    int32 iresult;

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

    if (iresult==0)

    {

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

    }


    else

    {

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

    }

     ContinuousRunFlag=1;//連續(xù)運行標志置1

}

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

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);}");  //設置樣式表

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

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

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

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

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

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

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

}


//定時器開啟連續(xù)運行

void MainWindow::Uprun_show()

{

   if(1 == ContinuousRunFlag)

   {

       ZV0_Show();

   }

}

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

//停止運行

void MainWindow::on_stop_clicked()

{

    int32 iresult;

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

    if (iresult==0)

    {

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

    }

    else

    {

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

    }

    ContinuousRunFlag=0;//連續(xù)運行標志置0

}

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

完整代碼獲取地址

4.png

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

更多精彩內容請關注“正運動小助手”公眾號,需要相關開發(fā)環(huán)境與例程代碼,請咨詢正運動技術銷售工程師:400-089-8936。


本文由正運動技術原創(chuàng),歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。



回顧往期內容


ZBasic結合Qt實現(xiàn)機器視覺圖像采集

會PLC也能玩轉機器視覺(二)識別條形碼
會PLC也能玩轉機器視覺(一)BLOB計數(shù)功能
機器視覺運動控制一體機應用例程(三) 基于BLOB分析的多圓定位
機器視覺運動控制一體機應用例程(二) 顏色識別
機器視覺運動控制一體機應用例程(一) 多目標形狀匹配

VPLC系列機器視覺運動控制一體機快速入門(十)OCR功能
VPLC系列機器視覺運動控制一體機快速入門(九)劃痕檢測
VPLC系列機器視覺運動控制一體機快速入門(八)測量點/線/圓
VPLC系列機器視覺運動控制一體機快速入門(七)識別功能
VPLC系列機器視覺運動控制一體機快速入門(六)標定功能

VPLC系列機器視覺運動控制一體機快速入門(五)尺寸測量

VPLC系列機器視覺運動控制一體機快速入門(四)BLOB有無檢測

VPLC系列機器視覺運動控制一體機快速入門(三)基于形狀匹配的視覺定位

VPLC系列機器視覺運動控制一體機快速入門(二)相機的基本使用

VPLC系列機器視覺運動控制一體機快速入門(一)軟硬件介紹及計數(shù)實例


正運動技術XPLC516E 的開放式Linux 平臺使用(上)

正運動技術XPLC516E 的開放式Linux 平臺使用(下)



關于正運動技術



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

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



5.png



標簽:

點贊

分享到:

上一篇:移動機器人領域內單線激光雷...

下一篇:【金升陽】基于市場需求的技...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.wangxinlc.cn)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

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

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

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

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號