簡體   English   中英

C#EmguCV Mat.Ptr

[英]C# EmguCV Mat.Ptr

我正在嘗試將C ++ OpenCV代碼轉換為C#Emgucv。 我轉換了幾行,但卡在了一行上。

Mat detectionMat(detection.size[2], detection.size[3], CV_32F, detection.ptr<float>());

我像上面一樣轉換

 Mat detectionMat = new Mat(detection.SizeOfDimemsion[2], detection.SizeOfDimemsion[3], Emgu.CV.CvEnum.DepthType.Cv32F, detection.Ptr.ToPointer());

但是我知道我在detection.Ptr.ToPointer()遇到問題,無法轉換。 提前致謝。

 caffe.PopulateNet(net);

        Mat prob;
        Mat img2 = new Mat(300,300,img.Depth,img.NumberOfChannels); 
        Emgu.CV.CvInvoke.Resize(img, img2, new Size(300, 300));

        //Mat inputBlob = DnnInvoke.BlobFromImage(img2,0.007843, new Size(300, 300), new MCvScalar(127.5,127.5,127.5), true); // ??
        Mat inputBlob = DnnInvoke.BlobFromImage(img, 0.007843, mean: new MCvScalar(127.5, 127.5, 127.5), swapRB: false); 
        net.SetInput(inputBlob, "data");

        Mat detection = net.Forward("detection_out");
        Mat detectionMat = new Mat(detection.SizeOfDimemsion[2], detection.SizeOfDimemsion[3], Emgu.CV.CvEnum.DepthType.Cv32F, detection.ptr<float>()); 

        double confidenceThreshold = 0.2;

@Musa,您正在使用哪個版本的Emgu CV。 在最新的版本中,沒有Mat構造函數采用您指定的參數。 您可以選擇:

Mat Constructor (Int32, Int32, DepthType, Int32)
Mat Constructor (Int32[], DepthType, IntPtr,IntPtr[])
Mat Constructor (Size, DepthType, Int32, IntPtr, Int32)
Mat Constructor (Int32, Int32, DepthType, Int32, IntPtr, Int32)

我猜您是要使用最后一個。 如果是這樣,則這是您數據的IntPtr。 但是不知道數據是什么,我幫不上什么忙。 知道什么是檢測程序或完整的代碼片段將非常有幫助。

編輯:Musa,盡管我還沒有使用EmguCV的DNN部分,但我想我明白了您正在嘗試做的事情。 net.Forward()調用的結果是有一個Mat對象。 我認為您可以嘗試以下方法,看看是否有幫助:

Mat detectionMat = new Mat(detection.SizeOfDimemsion[2], detection.SizeOfDimemsion[3], Emgu.CV.CvEnum.DepthType.Cv32F, detection.NumberOfChannels, detection.DataPointer, detection.Step);

道格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM