From cc0a3e06c26a90f05af8bc372ca5201bab5c6e98 Mon Sep 17 00:00:00 2001 From: lazywei Date: Mon, 16 Dec 2013 11:33:53 +0800 Subject: [PATCH] Add cvResize binding. --- opencv/imgproc.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 opencv/imgproc.go diff --git a/opencv/imgproc.go b/opencv/imgproc.go new file mode 100644 index 0000000..56d82ee --- /dev/null +++ b/opencv/imgproc.go @@ -0,0 +1,37 @@ +// Copyright 2013 jrweizhang AT gmail.com. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package opencv + +//#include "opencv.h" +//#cgo linux pkg-config: opencv +//#cgo darwin pkg-config: opencv +//#cgo windows LDFLAGS: -lopencv_core242.dll -lopencv_imgproc242.dll -lopencv_photo242.dll -lopencv_highgui242.dll -lstdc++ +import "C" +import ( + //"errors" + "log" + "unsafe" +) + +func Resize(src *IplImage, width, height, interpolation int) *IplImage { + if width == 0 && height == 0 { + panic("Width and Height cannot be 0 at the same time") + } + if width == 0 { + ratio := float64(height / src.Height()) + width = int(float64(src.Width()) * ratio) + log.Println(ratio) + log.Println(width) + } else if height == 0 { + ratio := float64(width / src.Width()) + height = int(float64(src.Height()) * ratio) + log.Println(ratio) + log.Println(height) + } + + dst := CreateImage(width, height, src.Depth(), src.Channels()) + C.cvResize(unsafe.Pointer(src), unsafe.Pointer(dst), C.int(interpolation)) + return dst +}