Qt+Halcon笔记(3)—— 绑定Halcon窗口及显示图片


1. 窗口的绑定

在这里插入图片描述

Step1:导入头文件
#ifndef __APPLE__
#  include "HalconCpp.h"
#else
#  ifndef HC_LARGE_IMAGES
#    include <HALCONCpp/HalconCpp.h>
#  else
#    include <HALCONCppxl/HalconCpp.h>
#  endif
#endif
Step2:声明一个全局的控制变量(HTuple类型)
HTuple WindowHandle;//control variables
Step3:在窗口构造函数中绑定Halcon窗口于控件
    //窗口绑定设置
    Hlong windID = (Hlong)this->ui->gV_image->winId();//绑定控件与halcon窗口
    //OpenWindow(0,0,ui->gV_image->width(),ui->gV_image->height(),0,"","",&WindowHandle);
    OpenWindow(0,0,ui->gV_image->width(),ui->gV_image->height(),windID,"visible","",&WindowHandle);//创建一个窗体ui
    SetPart(WindowHandle,0,0,2748,3664);//1944 2592
    SetDraw(WindowHandle,"margin");
    SetLineWidth(WindowHandle,1);
    SetColor(WindowHandle,"red");

注意:如果没绑定,则Halcon窗口是弹出的,而不是嵌入在控件中的

  • 绑定好的:在这里插入图片描述
  • 未绑定的:在这里插入图片描述

至此,窗口的绑定工作已完成。


2. 图片显示

void MainWindow::on_pB_Open_clicked()
{
    //
    HTuple FileNameModel;
    HObject halconImage;
    QString path = QFileDialog::getOpenFileName(this,"Select Image","","(*.png *.jpg)");
    if(path == "") return;
    SetDraw(WindowHandle,"margin");
    SetLineWidth(WindowHandle,1);
    SetColor(WindowHandle,"blue");
    FileNameModel = HTuple(path.toLatin1().data());
    ReadImage(&halconImage,FileNameModel);
    DispObj(halconImage,WindowHandle);
}

3. 完整工程代码

.pro配置文件
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = halconQt_demo1_gui

TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS

CONFIG += c++11

SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h

FORMS += \
        mainwindow.ui


INCLUDEPATH += $$PWD/include/halcon18_x64
INCLUDEPATH += $$PWD/include/halcon18_x64/halconcpp

win32: LIBS += -L$$PWD/lib/halcon18_x64/ -lhalcon

INCLUDEPATH += $$PWD/lib/halcon18_x64
DEPENDPATH += $$PWD/lib/halcon18_x64

win32: LIBS += -L$$PWD/lib/halcon18_x64/ -lhalconcpp

INCLUDEPATH += $$PWD/lib/halcon18_x64
DEPENDPATH += $$PWD/lib/halcon18_x64

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#ifndef __APPLE__
#  include "HalconCpp.h"
#else
#  ifndef HC_LARGE_IMAGES
#    include <HALCONCpp/HalconCpp.h>
#  else
#    include <HALCONCppxl/HalconCpp.h>
#  endif
#endif

using namespace HalconCpp;


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_pB_Open_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
#include <QFileDialog>
#include <QDebug>

HTuple WindowHandle;//control variables

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //窗口绑定设置
    Hlong windID = (Hlong)this->ui->gV_image->winId();//绑定控件与halcon窗口
    //OpenWindow(0,0,ui->gV_image->width(),ui->gV_image->height(),0,"","",&WindowHandle);//如果没绑定,则Halcon窗口是弹出的,而不是嵌入在控件中的
    OpenWindow(0,0,ui->gV_image->width(),ui->gV_image->height(),windID,"visible","",&WindowHandle);//创建一个窗体ui
    SetPart(WindowHandle,0,0,2748,3664);//1944 2592
    SetDraw(WindowHandle,"margin");
    SetLineWidth(WindowHandle,1);
    SetColor(WindowHandle,"red");

}

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

void MainWindow::on_pB_Open_clicked()
{
    //
    QString path = QFileDialog::getOpenFileName(this,"Select Image","","(*.png *.jpg)");
    if(path == "") return;
    qDebug() << "地址" << path;

    HTuple FileNameModel;
    HObject halconImage;
    FileNameModel = HTuple(path.toLatin1().data());
    ReadImage(&halconImage,FileNameModel);
    DispObj(halconImage,WindowHandle);
}

  • 18
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: QtHalcon都是现代计算机视觉领域中广泛使用的工具集。Qt是一种软件开发框架,提供了GUI编程、网络编程、多线程编程等工具;而Halcon是一个图像处理库,提供了各种图像分析和机器视觉的工具。 在三维显示方面,Qt提供了一些3D绘图函数,可以用于绘制三维图像和场景。而Halcon在三维显示方面比较擅长于提供点云数据可视化功能。在三维显示场景的过程中,Halcon可以读取和处理3D数据,如点云、深度图、体数据等,并对其进行可视化。 结合使用QtHalcon可以实现更加灵活和高效的三维数据可视化,例如在Qt中利用Halcon提供的函数来进行点云可视化和场景重建。同时,Qt的渲染功能和交互性非常强大,可以方便地完成用户界面的设计,以及与用户进行交互。 总之,QtHalcon在三维显示方面都有各自的优势,结合使用可以为用户提供更好的三维数据可视化体验。 ### 回答2: qt halcon三维显示是指使用QT编程语言和Halcon三维函数库,进行三维模型的显示和处理。Halcon三维函数库提供了强大的三维图像处理和分析能力,包括三维形状分析、三维重构、三维点云处理等功能。而QT是一种流行的跨平台应用程序开发框架,能够帮助开发者快速构建图形用户界面和多种应用。 使用qt halcon三维显示的优势在于可以对三维模型进行高效、精确的处理和显示。开发者可以通过QT提供的图形界面,方便地将Halcon三维函数库的功能整合到自己的应用中。此外,QT还提供了强大的图形渲染引擎,可以对复杂的三维模型进行实时渲染和交互操作。 qt halcon三维显示的应用领域非常广泛,包括机器人视觉、医疗影像、产品设计和制造等。例如,在机器人视觉领域,qt halcon三维显示可以帮助开发者快速构建拍摄、识别、定位和抓取等功能,提高机器人的智能水平。在医疗影像领域,qt halcon三维显示可以帮助医生更加直观地显示患者的CT、MRI等影像,帮助诊断疾病。在产品设计和制造领域,开发者可以使用qt halcon三维显示显示和编辑三维模型,帮助设计和制造出更加精确、完美的产品。 综上所述,qt halcon三维显示是一种强大、高效的三维模型显示和处理方案,可以帮助开发者在各个领域提升应用的智能和效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值