如何在VC環境下使用Halcon庫

2021-06-14 07:13:04 字數 2034 閱讀 1331

在vc環境下進行影象處理比在matlab下開發運算速度要快,但工作量要大的多,用matlab做影象處理,直接呼叫裡面的相關函式就可以完成,而且比較直觀,但滿足不了在速度上要求比較高的場合。所以在vc環境下直接開發往往是首選,但由於vc只是乙個開發環境,直接運用於影象處理的函式還得自己編寫新增,所以往往很耗時。隨著各類機器視覺軟體的開發,各種機器視覺軟體包也相繼產生,halcon就是乙個比較強大的機器視覺軟體,功能比較全,在hdevelop環境下開發比較容易,執行速度也較快。除此之外,halcon也可以整合到其他開發環境下,這樣可以節約底層開發時間,直接有效地運用它的函式庫,可以產生很好的效果。下面就結合自己的經驗,簡單介紹一下在vc環境下如何使用halcon庫。

在vc環境下進行影象處理,往往需要自己寫影象處理的類,現在有一些前人寫好的類,比如cdib類、dibapi類等等,因此可以直接「拿來主義」。halcon庫就相當於乙個封裝好的類,通過在vc下進行一些簡單的設定,我們就可以使用其裡面的函式了。下面是在vc環境下如何設定:

1.       首先在project->settings.....中的link屬性頁中新增halconcpp.lib;

2.       其次在project->settings.....中的c/c++屬性頁中的preprocessor中新增目錄$(halconroot)\include,$(halconroot)\include\cpp;

3.       然後在project->settings.....中的link屬性頁中input下來選單中新增路徑$(halconroot)\lib\i586-nt4;

4.       最後當然是不要忘了在程式中新增類的標頭檔案了:#i nclude "halconcpp.h"

上面的設定好了,一切ok了。下面就可以在程式中呼叫hdevelop中的函式了,比如影象增強函式emphasize(himage, &hrotateimage, 7, 7, 2.0)等等。我們知道在hdevelop中通常影象是作為乙個tuple變數,因此在vc中有必要進行變數轉換,例如:

針對灰度影象可以將影象數轉換成乙個hobject變數:

gen_image1(&himage,"byte",width, height,(long)m_pimagebuffer);

針對彩色影象,可以分別取出r、g、b三個分量:

extractrgb24channels(m_pimagebuffer, m_pred, m_pgreen,m_pblue);

然後在轉換為hobject變數:

gen_image3(&himage, "byte", width, height, (long )m_pred, (long )m_pgreen, (long )m_pblue);

接下來就可以呼叫影象處理函式了,比如

影象增強:emphasize(himage, &hrotateimage, 7, 7, 2.0); //引數可以調整

閾值化:bin_threshold(himage,&hrotateimage);

rgb1_to_gray(himage,&hrotateimage);//轉化為灰度圖

把處理完的變數轉換成到乙個buffer中,用於影象顯示:get_image_pointer1(hrotateimage,(long *)&m_pimagebuffer,type, &width1, &height1);

但在呼叫halcon庫函式時也碰到了一些問題,比如在影象旋轉中rotate_image(himage, &hrotateimage, 90, "constant"); 將處理後的變數轉換成

get_image_pointer3(hrotateimage, (long *)&m_pred, (long *)&m_pgreen, (long *)&m_pblue, type, &width1, &height1);

composergb24(m_pred, m_pgreen, m_pblue, m_pimagebuffer);

而執行過程中出現錯誤,get_image_pointer3這個函式報錯,undefined gray value in get_image_pointer3還需解決!

邊摸索邊進步,在其他環境中的呼叫還需要試試,比如嵌入式作業系統等等。

如何在沒有https環境下使用webrtc

新版本的webrtc使用需要https,但是在內網開發除錯時,要配置https環境比較麻煩,下面的方法是教你如何在http下使用webrtc 1,點桌面上的chrome圖票,右鍵 屬性,把目票輸入框中的內容換成以下內容 unsafely treat insecure origin as secure...

如何在Linux環境下安裝Anaconda軟體

學python,用這個軟體效果挺好的,因為不用配那麼多的環境,好多庫都整合在一起了。這個軟體目前有windows和linux版本,在linux安裝,有點小麻煩,特此總結一下 接著用非root許可權安裝,注意,安裝此檔案不需要root許可權。中間需要輸入 yes 最後完成安裝。安裝完之後測試一下 py...

如何在VC 中使用API直接列印

在visual c 中,應用程式通常是使用cview中提供的列印功能,在onprint 或ondraw 中向印表機輸出。但是對於對話方塊中的資料,或基於對話方塊的程式,列印成了一件繁瑣的工作。該段 向使用者提供了printlistctrl 函式,用於列印使用者在對話方塊或formview中的clis...