前回の記事ではpythonをベースとしたHalconとQtの共同プログラミングについて触れましたが、実際の開発においては、例えばアルゴリズム反復用にqtで記述したc++版のソフトウェアが既にある場合や、すでにhalconで記述したアルゴリズム(.hdevファイル)があり、それをパッケージ化したい場合には、halconで記述した.hdevファイルを.cppファイルに変換してからqtをベースとした共同プログラミングを実装することも検討できます。
1. qt と halcon をインストールします (これには多くのチュートリアルが含まれています。qt をインストールするときは mscv バージョンの選択に注意してください)
2. .hdev ファイルの halcon アルゴリズムを記述します。
3. halcon 関連の依存関係を QT にインポートします
。 1. 新しい qt プロジェクトを作成し、コンパイラーとして mscv を選択します。 2.
プロジェクトのルート ディレクトリの下に新しいインクルード フォルダーを作成し、halcon インストール ディレクトリの下のインクルード フォルダー内のすべてのファイルを、プロジェクト ルート ディレクトリの下に新しく作成されたインクルード フォルダーにコピーします。
2. プロジェクトルートディレクトリ直下に新規libフォルダを作成し、halconインストールディレクトリ直下のlibフォルダ内のx64-win64フォルダをプロジェクトルートディレクトリ直下に新規作成したlibフォルダにコピーします。
4. プロジェクトの .pro ファイルに次の内容を追加します。
#---------------------- .pro プロジェクト ファイルに追加します -----------------
#----------------------- QT および halcon の共同プログラミング設定 -------------
INCLUDEPATH += PWD / include INCLUDEPATH + = PWD/include INCLUDEPATH +=PWD /含むINC LU DEPATH + _ _ _ _ _ _ _ _ _ _ _ _= PWD/インクルード/halconcpp
LIBS += PWD / lib / x 64 − win 64 / halconcpp 。lib LIBS + = PWD/lib/x64-win64/halconcpp.lib LIBS +=PWD /ポンド/ × 64 _ _ _−w in 64 /ハルコンc pp . _ _ lib L I BS + _= PWD/lib/x64-win64/halcon.lib
5. 次の内容を mainwindow.h ヘッダー ファイルに追加します
#include “halconcpp/HalconCpp.h”
#include “Halcon.h”
#include <HDevThread.h>
名前空間 HalconCpp を使用します。
この時点で、QT への halcon のインポートが完了します。
4. halcon ファイルを .cpp ファイルに変換します。
halcon でファイル エクスポート言語を選択し、c++ ファイルを選択します。
現在、c ファイル、cpp ファイル、vb ファイル、および c# ファイルの合計 4 つのエクスポート形式がサポートされています。必要な学生は、これら 4 つの言語から自分の使い慣れた言語を導き出すことができます。ここでは .cpp ファイルとしてエクスポートします。
五、下面进行联合编程
在头文件中,把上面halcon转化的.cpp文件中的halcon各种变量复制粘贴进头文件进行声明,例如Hlong、Hobject、Htuble等,以及disp_message 、disp_message 等函数名进行声明(这里和你自己的代码相关,都在转化的.cpp文件中)
在.ui中建立两个按钮和一个QGraphicsView
把halcon转化的.cpp文件中void action()中除变量的代码复制进去(因为变量已经在头文件中声明了)
我这里的软件有两个功能,一个是打开图片,一个是检测图片,源码都是在halcon转化的.cpp文件中void action()中选择粘贴,也就是说,void action()是转化的算法具体内容,可以选择不同的部分贴如qt中的函数,我这里把void action()中打开图片和检测图片分别写入两个按钮的函数中
halcon によって変換された .cpp ファイルでは、void action() を除く関数が下図に示されています。ボタン関数内で呼び出されるため、これも qt の mainwindow.cpp ファイルに貼り付ける必要があります。また、これらの関数は前述したようにヘッダー ファイルで宣言する必要があります。
コード作業はここで終了
6. コンパイルして実行すると、結果は次の図のようになります。