c# - How to use new C++ style API in OpenCVSharp code? -


i'm using opencvsharp have half of code in c , other half in c++ api, i'm trying port c++ version avoid deprecated api avoid loading images twice (share mat instead of having 1 mat , 1 cvmat per image)

here's code had works :

            cvmat distortion = new cvmat(8, 1, matrixtype.f64c1);             distortion[0, 0] = camera.cameraconfig.k1;             distortion[1, 0] = camera.cameraconfig.k2;             distortion[2, 0] = camera.cameraconfig.p1;             distortion[3, 0] = camera.cameraconfig.p2;             distortion[4, 0] = camera.cameraconfig.k3;             distortion[5, 0] = 0;             distortion[6, 0] = 0;             distortion[7, 0] = 0;              cvmat intrinsic = new cvmat(3, 3, matrixtype.f32c1);             intrinsic[0, 0] = camera.cameraconfig.fx;             intrinsic[0, 1] = camera.cameraconfig.skew;             intrinsic[0, 2] = camera.cameraconfig.cx;             intrinsic[1, 0] = 0;             intrinsic[1, 1] = camera.cameraconfig.fy;             intrinsic[1, 2] = camera.cameraconfig.cy;             intrinsic[2, 0] = 0;             intrinsic[2, 1] = 0;             intrinsic[2, 2] = 1;             cv.undistort2(camera.sourceimage, newsourceimage,intrinsic,distortion); 

and code (that seemed obvious port typed it) doesn't work (i end single colored image of color present in scene) :

            mat distortion = new mat(8, 1, mattype.cv_64fc1);             distortion.set(0, 0, camera.cameraconfig.k1);             distortion.set(1, 0, camera.cameraconfig.k2);             distortion.set(2, 0, camera.cameraconfig.p1);             distortion.set(3, 0, camera.cameraconfig.p2);             distortion.set(4, 0, camera.cameraconfig.k3);             distortion.set(5, 0, 0);             distortion.set(6, 0, 0);             distortion.set(7, 0, 0);              mat intrinsic = new mat(3, 3, mattype.cv_32fc1);             intrinsic.set(0, 0, camera.cameraconfig.fx);             intrinsic.set(0, 1, camera.cameraconfig.skew);             intrinsic.set(0, 2, camera.cameraconfig.cx);             intrinsic.set(1, 0, 0);             intrinsic.set(1, 1, camera.cameraconfig.fy);             intrinsic.set(1, 2, camera.cameraconfig.cy);             intrinsic.set(2, 0, 0);             intrinsic.set(2, 1, 0);             intrinsic.set(2, 2, 1);             var newsourceimage = camera.sourceimage.undistort(intrinsic, distortion); 

am wrongly setting values? porting not straightforward?

it looks difference in camera.sourceimage , newsourceimage. in first snippet assign newsourceimage out of scope, assume can like:

newsourceimage = new mat(new size(...), mattype.cv_8uc3) 

but in second snippet create var newsourceimage = .... so, looks 'undistort' determines mat type , wrong.

can show initialization, please?


Comments

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -