diff --git a/README.md b/README.md index cec9831..3690c01 100644 --- a/README.md +++ b/README.md @@ -49,22 +49,25 @@ Please also note that the basic data structures in OpenCV (e.g., `cv::Mat`, `cv: ```go package main -import "github.com/lazywei/go-opencv/gocv" +import . "github.com/lazywei/go-opencv/gocv" +import "github.com/gonum/matrix/mat64" func main() { - objPts := gocv.NewGcvPoint3fVector(int64(4)) - objPts.Set(0, gocv.NewGcvPoint3f(0, 25, 0)) - objPts.Set(1, gocv.NewGcvPoint3f(0, -25, 0)) - objPts.Set(2, gocv.NewGcvPoint3f(-47, 25, 0)) - objPts.Set(3, gocv.NewGcvPoint3f(-47, -25, 0)) - imgPts := gocv.NewGcvPoint2fVector(int64(4)) - imgPts.Set(0, gocv.NewGcvPoint2f(1136.4140625, 1041.89208984)) - imgPts.Set(1, gocv.NewGcvPoint2f(1845.33190918, 671.39581299)) - imgPts.Set(2, gocv.NewGcvPoint2f(302.73373413, 634.79998779)) - imgPts.Set(3, gocv.NewGcvPoint2f(1051.46154785, 352.76107788)) + objPts := mat64.NewDense(4, 3, []float64{ + 0, 25, 0, + 0, -25, 0, + -47, 25, 0, + -47, -25, 0}) - gocv.GcvInitCameraMatrix2D(objPts, imgPts) + imgPts := mat64.NewDense(4, 2, []float64{ + 1136.4140625, 1041.89208984, + 1845.33190918, 671.39581299, + 302.73373413, 634.79998779, + 1051.46154785, 352.76107788}) + + camMat := GcvInitCameraMatrix2D(objPts, imgPts) + fmt.Println(camMat) } ``` diff --git a/gocv/gocv_calib3d_test.go b/gocv/gocv_calib3d_test.go new file mode 100644 index 0000000..72115ef --- /dev/null +++ b/gocv/gocv_calib3d_test.go @@ -0,0 +1,55 @@ +package gocv + +import ( + "testing" + + "github.com/davecgh/go-spew/spew" + "github.com/gonum/matrix/mat64" +) + +func TestGcvInitCameraMatrix2D(t *testing.T) { + objPts := mat64.NewDense(4, 3, []float64{ + 0, 25, 0, + 0, -25, 0, + -47, 25, 0, + -47, -25, 0}) + + imgPts := mat64.NewDense(4, 2, []float64{ + 1136.4140625, 1041.89208984, + 1845.33190918, 671.39581299, + 302.73373413, 634.79998779, + 1051.46154785, 352.76107788}) + + camMat := GcvInitCameraMatrix2D(objPts, imgPts) + spew.Dump(camMat) +} + +// func TestGcvCalibrateCamera(t *testing.T) { +// objPts := NewGcvPoint3fVector(int64(4)) +// objPts.Set(0, NewGcvPoint3f(0, 25, 0)) +// objPts.Set(1, NewGcvPoint3f(0, -25, 0)) +// objPts.Set(2, NewGcvPoint3f(-47, 25, 0)) +// objPts.Set(3, NewGcvPoint3f(-47, -25, 0)) + +// imgPts := NewGcvPoint2fVector(int64(4)) +// imgPts.Set(0, NewGcvPoint2f(1136.4140625, 1041.89208984)) +// imgPts.Set(1, NewGcvPoint2f(1845.33190918, 671.39581299)) +// imgPts.Set(2, NewGcvPoint2f(302.73373413, 634.79998779)) +// imgPts.Set(3, NewGcvPoint2f(1051.46154785, 352.76107788)) + +// imgSize := NewGcvSize2i(1920, 1080) + +// camMat := GcvInitCameraMatrix2D(objPts, imgPts) +// spew.Dump(camMat.GcvAtd(NewGcvSize2i(0, 0))) +// spew.Dump(camMat.GcvAtd(NewGcvSize2i(0, 1))) +// spew.Dump(camMat.GcvAtd(NewGcvSize2i(1, 1))) +// spew.Dump(camMat.GcvAtd(NewGcvSize2i(1, 2))) +// spew.Dump(camMat.GcvAtd(NewGcvSize2i(2, 2))) + +// rvec := NewMat() +// tvec := NewMat() + +// GcvCalibrateCamera(objPts, imgPts, imgSize, camMat, rvec, tvec) + +// MatToMat64(camMat) +// } diff --git a/gocv/gocv_test.go b/gocv/gocv_test.go index dae57c7..228cba8 100644 --- a/gocv/gocv_test.go +++ b/gocv/gocv_test.go @@ -4,7 +4,6 @@ import ( "testing" "github.com/davecgh/go-spew/spew" - "github.com/gonum/matrix/mat64" ) func TestNewGcvPoint3f32(t *testing.T) { @@ -27,50 +26,3 @@ func TestMat(t *testing.T) { mat2 := NewMat(mat) spew.Dump(mat2) } - -func TestGcvInitCameraMatrix2D(t *testing.T) { - objPts := mat64.NewDense(4, 3, []float64{ - 0, 25, 0, - 0, -25, 0, - -47, 25, 0, - -47, -25, 0}) - - imgPts := mat64.NewDense(4, 2, []float64{ - 1136.4140625, 1041.89208984, - 1845.33190918, 671.39581299, - 302.73373413, 634.79998779, - 1051.46154785, 352.76107788}) - - camMat := GcvInitCameraMatrix2D(objPts, imgPts) - spew.Dump(camMat) -} - -// func TestGcvCalibrateCamera(t *testing.T) { -// objPts := NewGcvPoint3fVector(int64(4)) -// objPts.Set(0, NewGcvPoint3f(0, 25, 0)) -// objPts.Set(1, NewGcvPoint3f(0, -25, 0)) -// objPts.Set(2, NewGcvPoint3f(-47, 25, 0)) -// objPts.Set(3, NewGcvPoint3f(-47, -25, 0)) - -// imgPts := NewGcvPoint2fVector(int64(4)) -// imgPts.Set(0, NewGcvPoint2f(1136.4140625, 1041.89208984)) -// imgPts.Set(1, NewGcvPoint2f(1845.33190918, 671.39581299)) -// imgPts.Set(2, NewGcvPoint2f(302.73373413, 634.79998779)) -// imgPts.Set(3, NewGcvPoint2f(1051.46154785, 352.76107788)) - -// imgSize := NewGcvSize2i(1920, 1080) - -// camMat := GcvInitCameraMatrix2D(objPts, imgPts) -// spew.Dump(camMat.GcvAtd(NewGcvSize2i(0, 0))) -// spew.Dump(camMat.GcvAtd(NewGcvSize2i(0, 1))) -// spew.Dump(camMat.GcvAtd(NewGcvSize2i(1, 1))) -// spew.Dump(camMat.GcvAtd(NewGcvSize2i(1, 2))) -// spew.Dump(camMat.GcvAtd(NewGcvSize2i(2, 2))) - -// rvec := NewMat() -// tvec := NewMat() - -// GcvCalibrateCamera(objPts, imgPts, imgSize, camMat, rvec, tvec) - -// MatToMat64(camMat) -// }