Comment utiliser Golang pour améliorer les bordures et les bords des images
Vue d'ensemble :
Dans le domaine du traitement d'image, l'amélioration des bordures et des bords est une technologie couramment utilisée qui peut améliorer efficacement les effets visuels des images et améliorer la précision de reconnaissance d'images. Cet article expliquera comment utiliser le langage Golang pour effectuer des opérations d'amélioration des bordures et des bords sur des images et fournira des exemples de code correspondants.
Remarque : cet article suppose que vous avez installé et configuré l'environnement de développement Golang dans votre environnement local.
import ( "image" "image/color" "image/draw" )
image/jpeg
: image/jpeg
包来加载图片文件:file, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer file.Close() img, _, err := image.Decode(file) if err != nil { log.Fatal(err) }
borderWidth := 10 borderColor := color.RGBA{255, 0, 0, 255} // 红色边框 borderRect := image.Rect(0, 0, img.Bounds().Dx()+borderWidth*2, img.Bounds().Dy()+borderWidth*2) borderImg := image.NewRGBA(borderRect) draw.Draw(borderImg, borderImg.Bounds(), &image.Uniform{borderColor}, image.ZP, draw.Src) draw.Draw(borderImg, img.Bounds().Add(image.Point{borderWidth, borderWidth}), img, image.ZP, draw.Src) outputFile, err := os.Create("output_with_border.jpg") if err != nil { log.Fatal(err) } defer outputFile.Close() jpeg.Encode(outputFile, borderImg, &jpeg.Options{Quality: 100})
这段代码中,我们首先根据原始图像的尺寸和指定的边框大小创建一个新的图像对象。然后使用draw.Draw
函数将边框的颜色绘制到新图像中,并将原始图像绘制在边框内。
最后,我们使用jpeg.Encode
radius := 1.0 // 边缘增强半径 threshold := 50.0 // 边缘增强阈值 enhancedImg := image.NewRGBA(img.Bounds()) for y := img.Bounds().Min.Y; y < img.Bounds().Max.Y; y++ { for x := img.Bounds().Min.X; x < img.Bounds().Max.X; x++ { r, g, b, _ := img.At(x, y).RGBA() neighbors := [9]color.Color{ img.At(x-1, y+1), img.At(x, y+1), img.At(x+1, y+1), img.At(x-1, y), img.At(x, y), img.At(x+1, y), img.At(x-1, y-1), img.At(x, y-1), img.At(x+1, y-1), } var totalDiff float64 for _, neighbor := range neighbors { nr, ng, nb, _ := neighbor.RGBA() totalDiff += diff(r, nr) + diff(g, ng) + diff(b, nb) } if totalDiff/9 > threshold { enhancedImg.Set(x, y, color.Black) } else { enhancedImg.Set(x, y, color.White) } } } outputFile, err = os.Create("output_with_enhanced_edges.jpg") if err != nil { log.Fatal(err) } defer outputFile.Close() jpeg.Encode(outputFile, enhancedImg, &jpeg.Options{Quality: 100})
draw.Draw
pour dessiner la couleur de la bordure dans la nouvelle image et dessiner l'image originale à l'intérieur de la bordure. Enfin, nous utilisons la fonction jpeg.Encode
pour enregistrer l'image avec des bordures ajoutées dans un fichier. Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!