Maison  >  Article  >  développement back-end  >  Comment utiliser Golang pour améliorer les bordures et les bords des images

Comment utiliser Golang pour améliorer les bordures et les bords des images

WBOY
WBOYoriginal
2023-08-18 21:46:45820parcourir

Comment utiliser Golang pour améliorer les bordures et les bords des images

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.

  1. Importer des packages de dépendances
    Tout d'abord, nous devons importer les packages de dépendances suivants pour les opérations de traitement d'image :
import (
    "image"
    "image/color"
    "image/draw"
)
  1. Charger les images
    Ensuite, nous devons charger les fichiers image à traiter. Ici, nous prenons une photo au format JPEG comme exemple et chargeons le fichier image via le package 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)
}
  1. 增加边框
    现在,我们可以对图像添加边框了。我们可以自定义边框的大小和颜色,以及边框距离图像的边界的距离。
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})
      Ajoutez une bordure
    1. Maintenant, nous peut ajouter une bordure à l'image. Nous pouvons personnaliser la taille et la couleur de la bordure, ainsi que la distance entre la bordure et le bord de l'image.
    2. rrreee
    Dans ce code, nous créons d'abord un nouvel objet image basé sur la taille de l'image originale et la taille de bordure spécifiée. Utilisez ensuite la fonction 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.


    Amélioration des bords🎜En plus d'ajouter des bordures, nous pouvons également améliorer les bords de l'image pour mettre en évidence le contour des objets dans l'image. 🎜🎜rrreee🎜Dans ce code, nous parcourons chaque pixel de l'image et obtenons les valeurs des pixels qui l'entourent. Ensuite, la différence entre chaque pixel et les pixels environnants est calculée et ces valeurs de différence sont accumulées. Si la valeur accumulée est supérieure au seuil spécifié, cela signifie que ce pixel est situé au bord de l'image, et nous le mettons en noir sinon, il est mis en blanc ; Enfin, enregistrez les bords améliorés dans un fichier. 🎜🎜Résumé : 🎜Grâce à l'exemple de code ci-dessus, nous avons appris à utiliser Golang pour effectuer des opérations d'amélioration des bordures et des bords sur des images. Ces technologies peuvent être appliquées à des domaines tels que le traitement d’images, la vision par ordinateur et l’apprentissage automatique pour améliorer la qualité et la précision des images. J'espère que cet article vous aidera ! 🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn