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
Post a Comment