package main

import ( "fmt" "image" "image/jpeg" "os"

"gocv.io/x/gocv"
"gocv.io/x/gocv/contrib"

)

func main() { // load input image img := gocv.IMRead("input.jpg", gocv.IMReadColor) if img.Empty() { fmt.Printf("Failed to read image\n") return } defer img.Close()

// resize image
size := image.Point{X: 1024, Y: 1024}
gocv.Resize(img, &img, size, 0, 0, gocv.InterpolationCubic)

// convert image to tensor
tensor := gocv.NewMatWithSizeFromBytes(img.Rows(), img.Cols(), gocv.MatTypeCV32F, img.ToBytes())
tensor.ConvertTo(&tensor, gocv.MatTypeCV32F, 1.0/255.0)
tensor = tensor.Reshape(1, 3, img.Rows(), img.Cols())

// load models
models := []string{"model1.onnx", "model2.onnx", "model3.onnx"}
nets := make([]gocv.Net, len(models))
for i, model := range models {
    nets[i] = gocv.ReadNetFromONNX(model)
    defer nets[i].Close()
}

// predict
drawings := make([]image.Image, len(models))
for i, net := range nets {
    net.SetInput(tensor, "input")
    out := net.Forward("0")
    defer out.Close()

    outMat := gocv.NewMat()
    out.ConvertTo(&outMat, gocv.MatTypeCV8UC3, 255.0)
    defer outMat.Close()

    outImg, err := outMat.ToImage()
    if err != nil {
        fmt.Printf("Failed to convert output to image: %v\n", err)
        return
    }
    drawings[i] = outImg
}

// save drawings
for i, drawing := range drawings {
    file, err := os.Create(fmt.Sprintf("drawing%d.jpg", i))
    if err != nil {
        fmt.Printf("Failed to create file: %v\n", err)
        return
    }
    defer file.Close()

    err = jpeg.Encode(file, drawing, nil)
    if err != nil {
        fmt.Printf("Failed to encode drawing: %v\n", err)
        return
    }
}
使用golang重构python 代码以下是代码import torchfrom PIL import Imageimport torchvisiontransforms as transformsdef predictinput_img size=512 models= # input_img = Imageopeninput_img transform = transformsCo

原文地址: https://www.cveoy.top/t/topic/clvi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录