halcon13初探,显示一张图片(c++)

  • Post author:
  • Post category:其他


halcon13初探,显示一张图片(c++)

目的:将halcon的窗口嵌入到MFC当中,并显示一张图片;

1、配置

可执行文件目录bin:
C:\Program Files\MVTec\HALCON-13.0\bin\x64-win64

库目录lib:
C:\Program Files\MVTec\HALCON-13.0\lib\x64-win64

包含目录include:
C:\Program Files\MVTec\HALCON-13.0\include
C:\Program Files\MVTec\HALCON-13.0\include\halconcpp

库文件lib[附加依赖项]:
halcon.lib
halconc.lib
halconcpp.lib
halconcpp10.lib
halconcpp10xl.lib
halconcppxl.lib
halconcxl.lib
halconx.lib
halconxl.lib
halconxxl.lib
hdevenginecpp.lib
hdevenginecpp10.lib
hdevenginecpp10xl.lib
hdevenginecppxl.lib
hdevenginex.lib
hdevenginexxl.lib

测试时需包含的头文件:
#pragma once
#ifndef __APPLE__
#include "HalconCpp.h"
#else                                       
#ifndef HC_LARGE_IMAGES
#include <HALCONCpp/HalconCpp.h>
#else
#include <HALCONCppxl/HalconCpp.h>
#  endif
#endif
using namespace HalconCpp; 

在测试中发现了问题,如果出现了:HalconCpp::HOperatorException

请使用try catch捕获异常并进行显示,是什么错则一目了然。

如下:

try{
    ///这里是Haclon代码
    }
    catch(HException &except){
        MessageBox(CString(except.ErrorMessage())); 
    }

配置完成后,进行一个简单的测试,为了方便,我把所有操作都写到一个按钮控件下了:

    HObject  ho_Image;
    ReadImage(&ho_Image, "C:/Users/wangyang/Desktop/7Color8B.png"); //加载图片
    CWnd *pWnd = GetDlgItem(IDC_P); 
    CDC *pDC = pWnd->GetDC(); 
    CRect Rect; 
    pWnd->GetClientRect(&Rect); //获取MFC中Picture控件Rect
    HTuple wndID = (Hlong)pWnd->m_hWnd; //获取picture控件ID号

    HTuple HwndID; //Halcon的窗口ID
    OpenWindow((Hlong)Rect.top, (Hlong)Rect.left, (Hlong)Rect.Width(), (Hlong)Rect.Height(), (Hlong)wndID, "visible", "", &HwndID); //将MFC控件ID以及其尺寸等信息传给Halcon窗口控件
    HTuple hWidth, hHeight; 
    GetImageSize(ho_Image, &hWidth, &hHeight); //获得图像的尺寸
    SetPart(HwndID, 0, 0, hHeight, hWidth); //设置控件要显示的像素尺寸
    DispObj(ho_Image, HwndID); //显示图像

so easy!



版权声明:本文为u012541187原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。