go-opencv/opencv/cxcore_test.go
2015-08-15 12:05:47 +12:00

75 lines
1.7 KiB
Go

package opencv
import (
"bytes"
"io/ioutil"
"os"
"path"
"runtime"
"syscall"
"testing"
)
func TestLoadImage2(t *testing.T) {
// t.Errorf("aaa")
}
func TestInitFont(t *testing.T) {
// Will assert at the C layer on error
InitFont(CV_FONT_HERSHEY_DUPLEX, 1, 1, 0, 1, 8)
}
func TestPutText(t *testing.T) {
_, currentfile, _, _ := runtime.Caller(0)
filename := path.Join(path.Dir(currentfile), "../images/lena.jpg")
image := LoadImage(filename)
if image == nil {
t.Fatal("LoadImage fail")
}
defer image.Release()
// Write 'Hello' on the image
font := InitFont(CV_FONT_HERSHEY_DUPLEX, 1, 1, 0, 1, 8)
color := NewScalar(255, 255, 255, 0)
pos := Point{image.Width() / 2, image.Height() / 2}
font.PutText(image, "Hello", pos, color)
filename = path.Join(path.Dir(currentfile), "../images/lena_with_text.jpg")
// Uncomment this code to create the test image "../images/lena_with_text.jpg"
// It is part of the repo, and what this test compares against
//
// SaveImage(filename, image, 0)
// println("Saved file", filename)
tempfilename := path.Join(os.TempDir(), "lena_with_text.jpg")
defer syscall.Unlink(tempfilename)
SaveImage(tempfilename, image, 0)
// Compare actual image with expected image
same, err := BinaryCompare(filename, tempfilename)
if err != nil {
t.Fatal(err)
}
if !same {
t.Error("Actual file differs from expected file with text")
}
}
// Compare two files, return true if exactly the same
func BinaryCompare(file1, file2 string) (bool, error) {
f1, err := ioutil.ReadFile(file1)
if err != nil {
return false, err
}
f2, err := ioutil.ReadFile(file2)
if err != nil {
return false, err
}
return bytes.Equal(f1, f2), nil
}