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 }