因爱智能

halcon学习笔记(5)——QT和Halcon配置c++混合编程

  QT和halcon的配置实验了一阵,总是不太成功;后来用qt+vs版本的,并且用vs编译器才配合成功,这里和大家分享一下经验。

         (1)首先下载qt-opensource-windows-x86-msvc2010-5.5.1.exe,这个官网上就有;

         (2)下载qt-vs-addin-1.2.4-opensource.exe,这个官网也有,没有可以去这个网站(很全):http://www.qtcn.org/bbs/read-htm-tid-1075.html;

         (3)下载安装个msvc2010,这个自己在网上找资源吧;

         (4)下载安装halcon11,这个也自己找一下资源吧;

         (5)我的系统是win7+64位,安装时候先安装msvc2010,再安装qt-opensource,再安装qt-vs就可以,按着操作走就可以;

         (6)以上都安装完成后,打开msvc2010会看到多QT选项,如下:


          (7)点击QT5>>QT Options,弹出对话框里点击添加“add”,将qt目录里msvc2010添加进去,点击ok如下图:


            (8)以上是配置qt+vs;现在配置halcon,在vs添加halcon的头文件目录和lib目录;新建一个qt项目,然后选择qt项目的属性,在属性里面选择:配置属性>>vc++目录>>包含目录,选择编辑添加halcon的include目录如下图:


       (9)继续选择:配置属性>>vc++目录>>引用目录,选择halcon的lib目录如下图:



          (10)继续选择:配置属性>>vc++目录>>库目录,同样选择halcon的lib目录;

          (11)选择:配置属性>>连接器>>附加库目录,同样选择halcon的lib目录;

          (12)以上基本配置完成;可以在main.cpp代码中添加如下,看看是否成功;这个实例是halcon手册中,Solution Guide I Basics中,4.1.4 A First Example的一个例子。


[cpp] view plain copy

  1. #include <QtWidgets/QApplication>  
  2. #include"Halcon.h"  
  3. #include"cpp/HalconCpp.h"  
  4. #include"halconcpp\HalconCpp.h"  
  5. #include <QPalette>  
  6. #include <QWidget>  
  7. #include <QMessageBox>  
  8. # include <stdio.h>  
  9.   
  10.      using namespace Halcon;  
  11.      using namespace HalconCpp;  
  12.   
  13. int main(int argc, char *argv[])  
  14. {  
  15.     QApplication a(argc, argv);  
  16.     testq w;  
  17.   
  18.     HalconCpp:: HObject  ho_Image, ho_BrightPixels, ho_Particles;  
  19.     HalconCpp:: HTuple  hv_Area, hv_Row, hv_Column,area;  
  20.   
  21.      ReadImage(&ho_Image, "particle");  
  22.      Threshold(ho_Image, &ho_BrightPixels, 120, 255);  
  23.      Connection(ho_BrightPixels, &ho_Particles);  
  24.          AreaCenter(ho_Particles, &hv_Area, &hv_Row, &hv_Column);  
  25.   
  26.       int s0,s1;  
  27.       s0=hv_Area[0];  
  28.       s1=hv_Area[1];  
  29.   
  30.       QMessageBox msgBox;  
  31.       msgBox.setText(QString::number(s0));  
  32.       msgBox.exec();  
  33.       
  34.       QMessageBox msgBox2;  
  35.       msgBox2.setText(QString::number(s1));  
  36.       msgBox2.exec();  
  37.   
  38.     w.show();  
  39.     return a.exec();  
  40. }  

       运行时候会弹出AreaCenter的里面第一个联通区域里的面积,如下图弹出“1847”:



       这个“1847”就是Area的第一个至,如halcon中运行下图所示:

评论