Qt5.9.9+Halcon19.5显示图片

在Qt新建Demo_HalconAshing_Qt  Mainwidow项目。

以下列出代码:

.pro文件:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Demo_HalconAshing_Qt
TEMPLATE = app

macx {
  QMAKE_CXXFLAGS += -F/Library/Frameworks
  QMAKE_LFLAGS   += -F/Library/Frameworks
  LIBS           += -framework HALCONCpp
}
else {
  #defines
  win32:DEFINES += WIN32

  #includes
  INCLUDEPATH   += "$$(HALCONROOT)/include"
  INCLUDEPATH   += "$$(HALCONROOT)/include/halconcpp"

  #libs
  QMAKE_LIBDIR  += "$$(HALCONROOT)/lib/$$(HALCONARCH)"
  unix:LIBS     += -lhalconcpp -lhalcon -lXext -lX11 -ldl -lpthread
  win32:LIBS    += "$$(HALCONROOT)/lib/$$(HALCONARCH)/halconcpp.lib" \
                   "$$(HALCONROOT)/lib/$$(HALCONARCH)/halcon.lib"
}

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

mainwindow.h文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

Mainwindow.cpp文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "Halcon/Include/halconcpp/HalconCpp.h"
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>

using namespace HalconCpp;

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

    QString filename;
    filename=QFileDialog::getOpenFileName(this, tr("Choose image"), "", tr("Images (*.png *.bmp *.jpg *.tif *.GIF )"));
    if(filename.isEmpty()) {
        return;
    } else {
        QImage* img=new QImage;
        if(! ( img->load(filename) ) ) { //load image
            QMessageBox::information(this, tr("Open image fail"), tr("Open image fail!"));
            delete img;
            return;
        }
        ui->label->setPixmap(QPixmap::fromImage(*img));
    }
    ui->label->setScaledContents(true);

    HObject mainImage;
    HTuple m_hWindowID;
    ReadImage(&mainImage, filename.toStdString().c_str());
    HTuple mainWndID;
    mainWndID = (Hlong)ui->label_2->winId();
    QString s_hWindowID = QString::fromStdString(m_hWindowID.ToString().Text());
    if (s_hWindowID == "[]")
    {
        OpenWindow(0, 0, ui->label_2->width(), ui->label_2->height(), mainWndID, "visible", "", &m_hWindowID);
    }
    HDevWindowStack::Push(m_hWindowID);
    HTuple srcImageHeight, srcImageWidth;
    GetImageSize(mainImage, &srcImageWidth, &srcImageHeight);
    Rgb1ToGray(mainImage, &mainImage);
    SetPart(m_hWindowID, 0, 0, srcImageHeight.I(), srcImageWidth.I());
    DispObj(mainImage, m_hWindowID);
}

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

窗口控件:

主要使用两个label,一个控件名称为label1,用于直接显示图片,另一个为Label2,用于使用halcon方法显示图片。

显示效果如下:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值