Heim >Backend-Entwicklung >Golang >So verwenden Sie Golang, um Ränder und Kanten von Bildern zu verbessern
So verwenden Sie Golang, um Ränder und Kanten von Bildern zu verbessern
Übersicht:
Im Bereich der Bildverarbeitung ist die Rand- und Kantenverbesserung eine häufig verwendete Technologie, die die visuellen Effekte von Bildern effektiv verbessern und die Genauigkeit von Bildern verbessern kann Bilderkennung. In diesem Artikel wird erläutert, wie Sie mithilfe der Golang-Sprache Rand- und Kantenverbesserungsvorgänge für Bilder durchführen, und entsprechende Codebeispiele bereitstellen.
Hinweis: In diesem Artikel wird davon ausgegangen, dass Sie die Golang-Entwicklungsumgebung in Ihrer lokalen Umgebung installiert und konfiguriert haben.
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
, um die Farbe des Rahmens in das neue Bild zu zeichnen und das Originalbild innerhalb des Rahmens zu zeichnen. Abschließend verwenden wir die Funktion jpeg.Encode
, um das Bild mit hinzugefügten Rändern in einer Datei zu speichern. Das obige ist der detaillierte Inhalt vonSo verwenden Sie Golang, um Ränder und Kanten von Bildern zu verbessern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!