2017-12-29 12 views
0

C++ OpenCV 코드를 C# Emgucv로 변환하려고합니다. 몇 줄을 변환했지만 한 줄에 갇혀 있습니다.C# EmguCV Mat.Ptr

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; 

답변

0

@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입니다. 그러나 데이터가 무엇인지 알지 못해서 나는별로 도움이되지 못합니다. 탐지가 무엇인지, 전체 코드 스 니펫을 아는 것은 매우 유용합니다.

편집 : 무사, 나는 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); 

더그에게 답장을

+0

감사합니다, 나는 3.3.0 EmguCV 버전을 사용하고 있습니다. 또한 모든 코드 행에 질문을 편집 할 것입니다. 관심을 가져 주셔서 감사합니다 – Musa

+0

Ok 코드를 편집했습니다 – Musa

+0

나는 마지막 스탠드에 대해서도 알려 드리겠습니다. 관심을 가져 주셔서 감사합니다. – Musa