栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QT与Halcon联合编程调用相机实时采集【采用定时器Qtimer】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QT与Halcon联合编程调用相机实时采集【采用定时器Qtimer】

1.QT与Halcon联合编程环境配置,第一步先要配置好环境。

详情见我另一篇博客配置方法:

QT与Halcon联合编程环境配置【注意事项以及遇到的各种坑】_NCUTer的博客-CSDN博客_qt联合halcon

配置好之后程序构建运行一次,在程序根目录下生成如下文件:

2.QT ui界面构建

 

3.将生成导出的halcon c++代码打开备用,挑选用到的代码放到mainwindow.cpp中

 mainwindow.h 代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include 
#include
using namespace HalconCpp;

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();  //开启相机采集

    void on_pushButton_2_clicked();  //关闭相机

    void on_pushButton_3_clicked();  //退出程序

    void camera();  //相机抓图函数

private:
    Ui::MainWindow *ui;

    // Local iconic variables
    HObject  ho_Image;

    // Local control variables
    HTuple  hv_WindowHandle, hv_AcqHandle, hv_Width;
    HTuple  hv_Height;
    //定义相机采图的定时器
    QTimer *timer;


};
#endif // MAINWINDOW_H

mainwindow.cpp 代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    timer = new QTimer(this);  //定义定时器
    connect (timer,&QTimer::timeout,this,[=]()
    {
        camera();
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

//打开相机开启采图
void MainWindow::on_pushButton_clicked()
{
    if (HDevWindowStack::IsOpen())
      CloseWindow(HDevWindowStack::Pop());
    SetWindowAttr("background_color","black");
    OpenWindow(0,0,ui->label_singleMain->width (),ui->label_singleMain->height (),(Hlong)ui->label_singleMain->winId(),"visible","",&hv_WindowHandle);
    HDevWindowStack::Push(hv_WindowHandle);
    OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive", -1, "default",
        -1, "false", "default", "00305330d6a1_Basler_acA244020gm", 0, -1, &hv_AcqHandle);
    timer->start(20);
}


//关闭相机
void MainWindow::on_pushButton_2_clicked()
{
    timer->stop ();
    CloseFramegrabber(hv_AcqHandle);
    QMessageBox::information (this,"Tip Message","相关已关闭成功!");
}
//退出程序
void MainWindow::on_pushButton_3_clicked()
{
    exit (0);
}
//相机定时器抓图配合事件
void MainWindow::camera()
{
    GrabImage(&ho_Image, hv_AcqHandle);
    GetImageSize(ho_Image, &hv_Width, &hv_Height);
    if (HDevWindowStack::IsOpen())
      SetPart(HDevWindowStack::GetActive(),0, 0, hv_Height-1, hv_Width-1);
    if (HDevWindowStack::IsOpen())
      DispObj(ho_Image, HDevWindowStack::GetActive());
}

===================尤其注意定时器的合理运用问题:

    QTimer *timer = new QTimer(this);  //定义定时器
    connect (timer,&QTimer::timeout,this,[=]()
    {
        camera();
    });


//相机定时器抓图配合事件
void MainWindow::camera()
{
    GrabImage(&ho_Image, hv_AcqHandle);
    GetImageSize(ho_Image, &hv_Width, &hv_Height);
    if (HDevWindowStack::IsOpen())
      SetPart(HDevWindowStack::GetActive(),0, 0, hv_Height-1, hv_Width-1);
    if (HDevWindowStack::IsOpen())
      DispObj(ho_Image, HDevWindowStack::GetActive());
}

//打开相机开启采图
void MainWindow::on_pushButton_clicked()
{
    if (HDevWindowStack::IsOpen())
      CloseWindow(HDevWindowStack::Pop());
    SetWindowAttr("background_color","black");
    OpenWindow(0,0,ui->label_singleMain->width (),ui->label_singleMain->height (),(Hlong)ui->label_singleMain->winId(),"visible","",&hv_WindowHandle);
    HDevWindowStack::Push(hv_WindowHandle);
    OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive", -1, "default",
        -1, "false", "default", "00305330d6a1_Basler_acA244020gm", 0, -1, &hv_AcqHandle);
    timer->start(20);
}


//关闭相机
void MainWindow::on_pushButton_2_clicked()
{
    timer->stop ();
    CloseFramegrabber(hv_AcqHandle);
    QMessageBox::information (this,"Tip Message","相关已关闭成功!");
}

至此程序即可成功运行调用相机进行采图了

我的配置完毕的QT源程序已发布至资源,如需要可自行查看参考【有疑问可评论在此大家一起看看哪里出了问题】:

QT与Halcon联合编程调用相机实时采图--QT_Halcon_CameraGrab.zip-QT文档类资源-CSDN下载

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976377.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号