mirror of
https://github.com/hybridgroup/gocv
synced 2025-08-25 08:41:04 +08:00
Add Mat profile wrapper in other areas of the library.
This commit is contained in:
6
dnn.go
6
dnn.go
@@ -130,7 +130,7 @@ func (net *Net) Forward(outputName string) Mat {
|
||||
cName := C.CString(outputName)
|
||||
defer C.free(unsafe.Pointer(cName))
|
||||
|
||||
return Mat{p: C.Net_Forward((C.Net)(net.p), cName)}
|
||||
return newMat(C.Net_Forward((C.Net)(net.p), cName))
|
||||
}
|
||||
|
||||
// ForwardLayers forward pass to compute outputs of layers listed in outBlobNames.
|
||||
@@ -229,7 +229,7 @@ func BlobFromImage(img Mat, scaleFactor float64, size image.Point, mean Scalar,
|
||||
val4: C.double(mean.Val4),
|
||||
}
|
||||
|
||||
return Mat{p: C.Net_BlobFromImage(img.p, C.double(scaleFactor), sz, sMean, C.bool(swapRB), C.bool(crop))}
|
||||
return newMat(C.Net_BlobFromImage(img.p, C.double(scaleFactor), sz, sMean, C.bool(swapRB), C.bool(crop)))
|
||||
}
|
||||
|
||||
// GetBlobChannel extracts a single (2d)channel from a 4 dimensional blob structure
|
||||
@@ -237,7 +237,7 @@ func BlobFromImage(img Mat, scaleFactor float64, size image.Point, mean Scalar,
|
||||
// a bones structure from pose detection, or a color plane from Colorization)
|
||||
//
|
||||
func GetBlobChannel(blob Mat, imgidx int, chnidx int) Mat {
|
||||
return Mat{p: C.Net_GetBlobChannel(blob.p, C.int(imgidx), C.int(chnidx))}
|
||||
return newMat(C.Net_GetBlobChannel(blob.p, C.int(imgidx), C.int(chnidx)))
|
||||
}
|
||||
|
||||
// GetBlobSize retrieves the 4 dimensional size information in (N,C,H,W) order
|
||||
|
@@ -136,7 +136,7 @@ func IMRead(name string, flags IMReadFlag) Mat {
|
||||
cName := C.CString(name)
|
||||
defer C.free(unsafe.Pointer(cName))
|
||||
|
||||
return Mat{p: C.Image_IMRead(cName, C.int(flags))}
|
||||
return newMat(C.Image_IMRead(cName, C.int(flags)))
|
||||
}
|
||||
|
||||
// IMWrite writes a Mat to an image file.
|
||||
@@ -244,5 +244,5 @@ func IMDecode(buf []byte, flags IMReadFlag) (Mat, error) {
|
||||
if err != nil {
|
||||
return Mat{}, err
|
||||
}
|
||||
return Mat{p: C.Image_IMDecode(*data, C.int(flags))}, nil
|
||||
return newMat(C.Image_IMDecode(*data, C.int(flags))), nil
|
||||
}
|
||||
|
@@ -15,6 +15,7 @@ import (
|
||||
|
||||
func TestIMRead(t *testing.T) {
|
||||
img := IMRead("images/face-detect.jpg", IMReadColor)
|
||||
defer img.Close()
|
||||
if img.Empty() {
|
||||
t.Error("Invalid Mat in IMRead")
|
||||
}
|
||||
@@ -25,6 +26,7 @@ func TestIMWrite(t *testing.T) {
|
||||
tmpfn := filepath.Join(dir, "test.jpg")
|
||||
|
||||
img := IMRead("images/face-detect.jpg", IMReadColor)
|
||||
defer img.Close()
|
||||
if img.Empty() {
|
||||
t.Error("Invalid read of Mat in IMWrite test")
|
||||
}
|
||||
@@ -40,6 +42,7 @@ func TestIMWriteWithParams(t *testing.T) {
|
||||
tmpfn := filepath.Join(dir, "test.jpg")
|
||||
|
||||
img := IMRead("images/face-detect.jpg", IMReadColor)
|
||||
defer img.Close()
|
||||
if img.Empty() {
|
||||
t.Error("Invalid read of Mat in IMWrite test")
|
||||
}
|
||||
@@ -52,6 +55,7 @@ func TestIMWriteWithParams(t *testing.T) {
|
||||
|
||||
func TestIMEncode(t *testing.T) {
|
||||
img := IMRead("images/face-detect.jpg", IMReadColor)
|
||||
defer img.Close()
|
||||
if img.Empty() {
|
||||
t.Error("Invalid Mat in IMEncode test")
|
||||
}
|
||||
@@ -94,6 +98,7 @@ func ExampleIMEncodeWithParams() {
|
||||
|
||||
func TestIMEncodeWithParams(t *testing.T) {
|
||||
img := IMRead("images/face-detect.jpg", IMReadColor)
|
||||
defer img.Close()
|
||||
if img.Empty() {
|
||||
t.Error("Invalid Mat in IMEncode test")
|
||||
}
|
||||
@@ -132,6 +137,7 @@ func TestIMDecode(t *testing.T) {
|
||||
if dec.Empty() {
|
||||
t.Error("Invalid Mat in IMDecode")
|
||||
}
|
||||
dec.Close()
|
||||
|
||||
dec, err = IMDecode([]byte{}, IMReadColor)
|
||||
if err == nil {
|
||||
|
@@ -491,7 +491,7 @@ func GetStructuringElement(shape MorphShape, ksize image.Point) Mat {
|
||||
height: C.int(ksize.Y),
|
||||
}
|
||||
|
||||
return Mat{p: C.GetStructuringElement(C.int(shape), sz)}
|
||||
return newMat(C.GetStructuringElement(C.int(shape), sz))
|
||||
}
|
||||
|
||||
// MorphType type of morphological operation.
|
||||
@@ -1076,7 +1076,7 @@ func GetRotationMatrix2D(center image.Point, angle, scale float64) Mat {
|
||||
x: C.int(center.X),
|
||||
y: C.int(center.Y),
|
||||
}
|
||||
return Mat{p: C.GetRotationMatrix2D(pc, C.double(angle), C.double(scale))}
|
||||
return newMat(C.GetRotationMatrix2D(pc, C.double(angle), C.double(scale)))
|
||||
}
|
||||
|
||||
// WarpAffine applies an affine transformation to an image. For more parameters please check WarpAffineWithParams
|
||||
@@ -1173,7 +1173,7 @@ func ApplyCustomColorMap(src Mat, dst *Mat, customColormap Mat) {
|
||||
func GetPerspectiveTransform(src, dst []image.Point) Mat {
|
||||
srcPoints := toCPoints(src)
|
||||
dstPoints := toCPoints(dst)
|
||||
return Mat{p: C.GetPerspectiveTransform(srcPoints, dstPoints)}
|
||||
return newMat(C.GetPerspectiveTransform(srcPoints, dstPoints))
|
||||
}
|
||||
|
||||
// DrawContours draws contours outlines or filled contours.
|
||||
|
@@ -197,6 +197,7 @@ func TestDilate(t *testing.T) {
|
||||
defer dest.Close()
|
||||
|
||||
kernel := GetStructuringElement(MorphRect, image.Pt(1, 1))
|
||||
defer kernel.Close()
|
||||
|
||||
Dilate(img, &dest, kernel)
|
||||
if dest.Empty() || img.Rows() != dest.Rows() || img.Cols() != dest.Cols() {
|
||||
@@ -337,6 +338,7 @@ func TestErode(t *testing.T) {
|
||||
defer dest.Close()
|
||||
|
||||
kernel := GetStructuringElement(MorphRect, image.Pt(1, 1))
|
||||
defer kernel.Close()
|
||||
|
||||
Erode(img, &dest, kernel)
|
||||
if dest.Empty() || img.Rows() != dest.Rows() || img.Cols() != dest.Cols() {
|
||||
@@ -355,6 +357,7 @@ func TestMorphologyEx(t *testing.T) {
|
||||
defer dest.Close()
|
||||
|
||||
kernel := GetStructuringElement(MorphRect, image.Pt(1, 1))
|
||||
defer kernel.Close()
|
||||
|
||||
MorphologyEx(img, &dest, MorphOpen, kernel)
|
||||
if dest.Empty() || img.Rows() != dest.Rows() || img.Cols() != dest.Cols() {
|
||||
@@ -817,6 +820,7 @@ func TestGetRotationMatrix2D(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
got.Close()
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -825,6 +829,7 @@ func TestWarpAffine(t *testing.T) {
|
||||
src := NewMatWithSize(256, 256, MatTypeCV8UC1)
|
||||
defer src.Close()
|
||||
rot := GetRotationMatrix2D(image.Point{0, 0}, 1.0, 1.0)
|
||||
defer rot.Close()
|
||||
dst := src.Clone()
|
||||
defer dst.Close()
|
||||
|
||||
@@ -839,6 +844,7 @@ func TestWarpAffineGocvLogo(t *testing.T) {
|
||||
src := IMRead("images/gocvlogo.jpg", IMReadUnchanged)
|
||||
defer src.Close()
|
||||
rot := GetRotationMatrix2D(image.Point{0, 0}, 1.0, 1.0)
|
||||
defer rot.Close()
|
||||
dst := src.Clone()
|
||||
defer dst.Close()
|
||||
WarpAffine(src, &dst, rot, image.Point{343, 400})
|
||||
@@ -853,6 +859,7 @@ func TestWarpAffineWithParams(t *testing.T) {
|
||||
src := NewMatWithSize(256, 256, MatTypeCV8UC1)
|
||||
defer src.Close()
|
||||
rot := GetRotationMatrix2D(image.Point{0, 0}, 1.0, 1.0)
|
||||
defer rot.Close()
|
||||
dst := src.Clone()
|
||||
defer dst.Close()
|
||||
|
||||
@@ -867,6 +874,7 @@ func TestWarpAffineWithParamsGocvLogo(t *testing.T) {
|
||||
src := IMRead("images/gocvlogo.jpg", IMReadUnchanged)
|
||||
defer src.Close()
|
||||
rot := GetRotationMatrix2D(image.Point{0, 0}, 1.0, 1.0)
|
||||
defer rot.Close()
|
||||
dst := src.Clone()
|
||||
defer dst.Close()
|
||||
WarpAffineWithParams(src, &dst, rot, image.Point{343, 400}, InterpolationLinear, BorderConstant, color.RGBA{0, 0, 0, 0})
|
||||
@@ -900,6 +908,7 @@ func TestApplyColorMap(t *testing.T) {
|
||||
{name: "COLORMAP_PARULA", args: args{colormapType: ColormapParula, want: 111483.33555738274}},
|
||||
}
|
||||
src := IMRead("images/gocvlogo.jpg", IMReadGrayScale)
|
||||
defer src.Close()
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
@@ -944,6 +953,7 @@ func TestGetPerspectiveTransform(t *testing.T) {
|
||||
}
|
||||
|
||||
m := GetPerspectiveTransform(src, dst)
|
||||
defer m.Close()
|
||||
|
||||
if m.Cols() != 3 {
|
||||
t.Errorf("TestWarpPerspective(): unexpected cols = %v, want = %v", m.Cols(), 3)
|
||||
@@ -973,6 +983,7 @@ func TestWarpPerspective(t *testing.T) {
|
||||
image.Pt(0, 10),
|
||||
}
|
||||
m := GetPerspectiveTransform(s, d)
|
||||
defer m.Close()
|
||||
|
||||
dst := NewMat()
|
||||
defer dst.Close()
|
||||
@@ -1076,6 +1087,7 @@ func TestFilter2D(t *testing.T) {
|
||||
defer dst.Close()
|
||||
|
||||
kernel := GetStructuringElement(MorphRect, image.Pt(1, 1))
|
||||
defer kernel.Close()
|
||||
|
||||
Filter2D(src, &dst, -1, kernel, image.Pt(-1, -1), 0, BorderDefault)
|
||||
|
||||
@@ -1092,7 +1104,9 @@ func TestSepFilter2D(t *testing.T) {
|
||||
defer dst.Close()
|
||||
|
||||
kernelX := GetStructuringElement(MorphRect, image.Pt(1, 1))
|
||||
defer kernelX.Close()
|
||||
kernelY := GetStructuringElement(MorphRect, image.Pt(1, 1))
|
||||
defer kernelY.Close()
|
||||
|
||||
SepFilter2D(src, &dst, -1, kernelX, kernelY, image.Pt(-1, -1), 0, BorderDefault)
|
||||
|
||||
|
@@ -146,7 +146,7 @@ func (h *HOGDescriptor) DetectMultiScaleWithParams(img Mat, hitThresh float64,
|
||||
// https://docs.opencv.org/master/d5/d33/structcv_1_1HOGDescriptor.html#a660e5cd036fd5ddf0f5767b352acd948
|
||||
//
|
||||
func HOGDefaultPeopleDetector() Mat {
|
||||
return Mat{p: C.HOG_GetDefaultPeopleDetector()}
|
||||
return newMat(C.HOG_GetDefaultPeopleDetector())
|
||||
}
|
||||
|
||||
// SetSVMDetector sets the data for the HOGDescriptor.
|
||||
|
@@ -54,7 +54,9 @@ func TestHOGDescriptor(t *testing.T) {
|
||||
hog := NewHOGDescriptor()
|
||||
defer hog.Close()
|
||||
|
||||
hog.SetSVMDetector(HOGDefaultPeopleDetector())
|
||||
d := HOGDefaultPeopleDetector()
|
||||
defer d.Close()
|
||||
hog.SetSVMDetector(d)
|
||||
|
||||
rects := hog.DetectMultiScale(img)
|
||||
if len(rects) != 1 {
|
||||
@@ -73,7 +75,9 @@ func TestHOGDescriptorWithParams(t *testing.T) {
|
||||
hog := NewHOGDescriptor()
|
||||
defer hog.Close()
|
||||
|
||||
hog.SetSVMDetector(HOGDefaultPeopleDetector())
|
||||
d := HOGDefaultPeopleDetector()
|
||||
defer d.Close()
|
||||
hog.SetSVMDetector(d)
|
||||
|
||||
rects := hog.DetectMultiScaleWithParams(img, 0, image.Pt(0, 0), image.Pt(0, 0),
|
||||
1.05, 2.0, false)
|
||||
|
Reference in New Issue
Block a user