func ToImage(img *opencv.IplImage) image.Image {
	out := image.NewNRGBA(image.Rect(0, 0, img.Width(), img.Height()))
	if img.Depth() != opencv.IPL_DEPTH_8U {
		return nil // TODO return error
	}

	for y := 0; y < img.Height(); y++ {
		for x := 0; x < img.Width(); x++ {
			s := img.Get2D(x, y).Val()
			b, g, r, a := s[2], s[1], s[0], s[3]

			c := color.NRGBA{uint8(b), uint8(g), uint8(r), uint8(a)}
			out.Set(x, y, c)
		}
	}

	return out
}