opencv與emgucv的引數傳遞

2021-07-30 06:47:58 字數 943 閱讀 5566

因為需要使用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...