因為需要使用c#呼叫c++編寫的dll,且dll中涉及opencv函式呼叫,因此引數的傳遞可以採用emgucv提供的介面,而不用傻乎乎的將c#中的結構轉為位元組,再在c++中重新轉為opencv的結構。
dll中的c++函式如下,功能就是彩色影象yuv空間的直方圖均衡:
[cpp]view plain
copy
inthisto_enhance(iplimage* src, iplimage* dst)
這裡講dst作為引數傳遞,而不是返回值,目的就是在c#**內申請物件空間,否則在c++函式內 new出來的物件即使採用marshal.ptrtostructure轉換為託管**,依然會有莫名其妙的錯誤。
c#中的相關呼叫**如下:
[csharp]view plain
copy
intptr ptr = cvinvoke.cvcreateimage(cvinvoke.cvgetsize(frame),emgu.cv.cvenum.ipl_depth.
ipl_depth_8u, 3);//申請空間後再作為引數傳遞
api.histo_enhance(frame.ptr,ptr);//dll呼叫
miplimage mli =(miplimage)marshal.ptrtostructure(ptr, typeof
(miplimage));
//託管與非託管的轉換
imageoutframe = newimage(mli.width, mli.height, mli.widthstep, mli.imagedata);
其中api定義如下:
[csharp]view plain
copy
public
class
api
EmguCv安裝與配置
裝完了自己再總結一下大致流程 2 配置環境變數 path c emgu bin 3 新建wpf檔案 工具 選擇工具箱項 net framework元件 瀏覽 emgu bin emgu.cv.ui.dll 打勾確定 4 解決方案管理器 引用 瀏覽 emgu bin emgu.cv.ui.dll em...
關於emgucv的書 精選 EMGUCV基礎
第一章 emgu cv 簡介 emgu cv 是.net 平台下對 opencv 影象處理庫的封裝。也就是opencv 的.net 版。它執行在 net 相容的程式語言下呼叫 opencv 的函式,如 c vb vc 等。同時這個 封裝庫可以在 mono 下編譯和在 linux mac os x 上...
Emgucv4 1安裝與使用
以前使用的是emgucv3.2版本,但是最近出了4.1版本後,想新使用,發現幾個區別 2 使用時,引用dll位置有變化 1 emgucv3.2時,引用dll的位置如下 c emgu emgucv windesktop 3.2.0.2682 bin c emgu emgucv windesktop 3...