Halcon与QT的联合编程(1)
目錄
1、halcon代碼的封裝
2、halcon代碼的導出
3、halcon與QT聯合編程
3.1、QT工程建立
?3.2、qt與halcon聯合
1、halcon代碼的封裝
在對代碼進行封裝的時候,你一定要考慮你的輸入輸出是什么?
以
輸入:圖像
輸出:點、矩形、2個數字。(點和矩形是為了展示給客戶看的)
步驟:
(1)首先選中要封裝的代碼,右鍵創建一個新函數,進入如下界面:
一般文檔里面你也可以進行描述一下信息。
初學者暫時只需要選擇本地程序函數即可,下邊的庫函數和函數文件,就是自己定義的可以一直用他一直存在。但是本地函數他是本地的,只存在這個項目中。
圖中箭頭的進出分別表示參數的輸入與輸出。
(2)點擊應用就會完成函數的封裝。
(3)查看函數體的話,右鍵點擊封裝的函數,點擊顯示函數就會進入函數體。
(4)進入函數體之后,,可以在函數體的正上方右邊的編輯當前函數的接口和文檔這個按鈕,進入創建函數時的界面進行編輯。
?(5)如果有一些函數不想使用可以點擊halcon菜單欄中的函數菜單,
?以上就是基于halcon的函數封裝部分。
2、halcon代碼的導出
(導出之后再去寫入QT界面)
在halcon界面的菜單欄項上選擇文件---》導出語言,界面如下:
?導出之后,在上述導出文件的路徑下,你就可以看到程序了,此時這個程序就和halcon沒有關系了,就是獨立的cpp文件了。
3、halcon與QT聯合編程
3.1、QT工程建立
(可以把剛才導出的cpp程序,拖進QT中看一下--------這一步只是拖進來看一下導出來的文件是個什么樣子)
步驟:
(1)首先新建立一個工程。
文件----》新建立項目----》Qt Widgets Application---->choose
?Location:名稱與路徑的填寫
Build system:
Kits:
這一步一定要選中VS那個,(不要選擇MinGW,在做QT練習的時候選擇MinGW是可以的,但是做聯合編程的時候就不要選擇這個了。)
?(選擇MSVC不選擇MinGW,所以這就是在安裝QT之前,要先安裝VS的原因。------這里只是個人習慣而已)
Details:
類名稱(C)Class name:這個建議大家不要使用MainWindow,會很容易亂,類名稱建議大家改一個和自己項目有關的,比如這里使用QtHalconRecLocate,那么下邊的頭文件(Header files)、源文件(Source file)、和界面文件(Form file)就會隨著改變。
基類(B)Base class:這個是一個主窗口(可以使用QMainWindow).
?匯總Summary:
?最終生成的項目如下:
?建立的工程項目,如上。
-------------------至此一個項目框架我們就建立好了。?-----------------
上邊的都是自動生成的,不需要我們去寫,需要我們做的是:
需要將我們想要實現的功能添加進來。
(1)在.pro里邊:添加#include lib。(需要用到halcon,所以添加include lib項。
這里有一個代碼管理,即在.pro上右鍵,選擇在Explore中顯示。來到如下路徑下:
工程是.pro文件。
?我們需要在上述路徑下添加#include lib庫和包含文件。?
點擊QT界面左邊的項目,有一個編譯地址(構建項目),這個地址默認寫在我們當前目錄下,這里build-QtHalcon-Desktop_Qt_5_13_2_MSVC2015_64bit-Debug。
?而這里我們可以改一下,改為跟項目在一起。
?
?點擊生成,界面如下:
??
上述我們準備工作就做完了,包括:
1、qt的工程
2、halcon的導出
所以這兩步只是把材料做好了,下面需要去加工了。加工才是精華.......
?3.2、qt與halcon聯合
第一步:添加庫(理論上是要找你自己庫的所在位置,)為了便于管理在E:\QT\QtHalcon這個路徑(也就是Explore顯示所跳轉到的這個路徑下)先建立文件夾include包含頭文件和lib靜態鏈接庫和bin動態鏈接庫(bin一般也可以放在release下邊)
在include文件夾下邊,首先再建立一個文件夾includehalcon20x64(因為擔心后邊還有其他的include文件包含也放在include下邊,防止弄混)
首先找到halcon的安裝目錄,找到你安裝的halcon文件所在位置(本人halcon安裝在F盤下)即F:\softinstall\Study_Software\Halcon\include,把這個路徑下的文件全部復制進includehalcon20x64這個文件夾下去。(全部復制進來肯定不會有錯,也可以把下圖所紅框的4個不要,這樣以免沒用的占用磁盤空間;還有的人操作是鏈接過來,就想配置pcl庫時把路徑鏈接過來,但是個人覺的鏈接的不方便,因為每個人安裝的halcon位置不一樣;所以提倡放在這個相對路徑下,當你把代碼發布給別人時,他不用去改一些東西。)
?經測試這4個還是需要的。
?同理lib文件夾下也重新建立一個libhalcon20x64,把halcon安裝目錄下的lib文件也復制進來(這里可以暫時只復制halocn.lib和halconcpp.lib這兩個即可)。
第2步:添加到工程代碼即把這兩個包含到我們的工程代碼下邊。(在VS里邊是通過添加屬性一項一項來添加的,QT完全是使用代碼來加的)?中間的DEPENDPATH解釋是說應用程序依賴的搜索路徑。用qt自帶的添加庫的方法,這幾個代碼會自動生成。
?-L和-l表示這是一個lib庫(路徑添加就是這樣固定的,直接記住就行沒有為什么)
第3步:添加路徑完成后雙擊點擊.ui文件,開始寫窗口。
(1)拖進來一個Graphic View。就是qt的一個窗口。如果圖像多的話也可以拖多個。
在右邊黃色屬性框里邊,可以修改大小,名稱等。
可以寫成固定大小:
?(2)拖進來一個Push Button,并將名字修改為打開圖片(直接雙擊這個button按鈕可以修改名字的)。并在黃色屬性窗口上做如下修改:
?(3)拖進來一個Group Box。并直接修改名字為設置。(并附帶著把打開圖片這個Button放到設置這個大的Box里邊來)
(4)再拉進來一個垂直的彈簧Vertical Spacer,并在設置這個大的Box上右鍵,布局改為垂直布局。在整個大的就是最開始還沒有拖進來Graphic View這個的時候上面右鍵---》布局----》做一個水平布局,這樣水平與垂直高度都比較均衡,比較美觀。
此時你就會看到右邊黃色窗體上邊Group Box下邊有兩個功能,那么這3個就是一個組合。每一個包含里邊都是一個組合。
?按鈕上直接的修改名字都是現在這個拖進來的Box或者button上改名字,然后再在黃色框內做以修改。
簡單的功能到此結束,全部保存關閉這個.ui,再去編譯一下即可。如下就是我們編譯出來的一個項目:
?------------------至此與halcon還沒有發生關系-----------------------下面要導東西進去。
第4步:代碼整合
4.1:第一步:在.ui上的打開圖片上右鍵轉到槽,
選第一個點擊ok
4.2:第二步:在頭文件qthalconreclocate.h這個里邊加入include文件還有命名空間。
#include "HalconCpp.h"
using namespace HalconCpp;
?下面進入qthalconreclocate.cpp去寫打開圖片這個功能。在pB_OpenImage_clicked()下邊。
此時直接可以把剛才導出的halcon代碼拖進來,先把導出的halcon代碼里邊的前綴hv_和ho_給刪除掉,因為這個是halcon自帶的一個前綴沒用(個人習慣)
4.3:第三步:搜索action函數,一般拷文件就是拷貝這個里邊的文件。把這里邊的變量和函數分別拿出來放到對應的Button下。
1、先綁定窗口
具體操作見詳細代碼,內部有注釋。
最終實現的聯合編程界面如下:
?如果在執行代碼的過程中,要善于使用斷點調試。
完整代碼鏈接:https://download.csdn.net/download/m0_37957160/20440832?spm=1001.2014.3001.5503
總結
以上是生活随笔為你收集整理的Halcon与QT的联合编程(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: halcon:(4)halcon中XLD
- 下一篇: Halcon与QT的联合编程(2)