Maison > Article > développement back-end > Comment utiliser Golang pour effectuer un histogramme des couleurs et un traitement de binarisation sur les images
Comment utiliser Golang pour effectuer un histogramme des couleurs et un traitement de binarisation sur des images
Avec l'application généralisée du traitement d'images numériques, le traitement et l'analyse d'images sont également devenus un sujet brûlant dans le domaine de la vision par ordinateur. Parmi elles, l'histogramme des couleurs et la binarisation sont deux méthodes de traitement d'image courantes et importantes. Cet article explique comment utiliser Golang pour effectuer un histogramme de couleurs et un traitement de binarisation sur des images, et est accompagné d'exemples de code.
L'histogramme des couleurs est une statistique de la fréquence de couleur des pixels d'une image. L'analyse d'histogramme peut être utilisée dans des applications telles que l'amélioration d'images, la récupération d'images et la classification d'images. Voici un exemple de code qui utilise Golang pour calculer un histogramme de couleurs :
package main import ( "fmt" "image" "image/color" "log" "os" ) func main() { imgFile, err := os.Open("test.jpg") // 读取图像文件 if err != nil { log.Fatal(err) } defer imgFile.Close() img, _, err := image.Decode(imgFile) // 解码图像 if err != nil { log.Fatal(err) } bounds := img.Bounds() histogram := make(map[color.Color]int) // 创建颜色直方图 for y := bounds.Min.Y; y < bounds.Max.Y; y++ { for x := bounds.Min.X; x < bounds.Max.X; x++ { c := img.At(x, y) histogram[c]++ } } for c, count := range histogram { fmt.Printf("颜色: %v,频率: %d ", c, count) } }
Le code ci-dessus ouvre et décode d'abord le fichier image, puis crée un histogramme de couleurs. En parcourant chaque pixel et en comptant la fréquence des occurrences de couleurs, un histogramme des couleurs d'une image est finalement obtenu. Ici, nous utilisons directement la fonction image.Decode
de la bibliothèque officielle de Golang image
pour décoder l'image. Vous pouvez choisir d'autres bibliothèques de traitement d'image en fonction de vos propres besoins. image
中的image.Decode
函数解码图像,你可以根据自己的需求选择其他的图像处理库。
二值化是将一幅图像转换为只有两种颜色的图像,通常是黑色和白色。这个过程可以简化复杂的图像,也可以提取图像中的关键信息。下面是一个使用Golang对图像进行二值化处理的示例代码:
package main import ( "image" "image/color" "log" "os" ) func main() { imgFile, err := os.Open("test.jpg") // 读取图像文件 if err != nil { log.Fatal(err) } defer imgFile.Close() img, _, err := image.Decode(imgFile) // 解码图像 if err != nil { log.Fatal(err) } bounds := img.Bounds() binaryImg := image.NewGray(bounds) // 创建一个新的灰度图像 for y := bounds.Min.Y; y < bounds.Max.Y; y++ { for x := bounds.Min.X; x < bounds.Max.X; x++ { c := img.At(x, y) gray := color.GrayModel.Convert(c).(color.Gray) if gray.Y >= 128 { binaryImg.SetGray(x, y, color.White) // 大于等于128的像素点设为白色 } else { binaryImg.SetGray(x, y, color.Black) // 小于128的像素点设为黑色 } } } binaryFile, err := os.Create("binary.jpg") // 创建输出文件 if err != nil { log.Fatal(err) } defer binaryFile.Close() err = jpeg.Encode(binaryFile, binaryImg, &jpeg.Options{Quality: 100}) // 编码二值化图像 if err != nil { log.Fatal(err) } }
以上代码首先打开并解码图像文件,然后创建一个新的灰度图像。通过对每个像素点进行遍历,将像素点的灰度值与一个设定的阈值进行比较,并根据阈值选择设置黑色或白色。最后将二值化后的图像保存到文件中。同样,这里使用了Golang官方库image
中的image.Decode
rrreee
Le code ci-dessus ouvre et décode d'abord le fichier image, puis crée une nouvelle image en niveaux de gris. En parcourant chaque pixel, la valeur de gris du pixel est comparée à un seuil défini, et le noir ou le blanc est sélectionné en fonction du seuil. Enfin, l'image binarisée est enregistrée dans un fichier. De même, la fonctionimage.Decode
de la bibliothèque officielle de Golang image
est utilisée ici pour décoder l'image. Vous pouvez choisir d'autres bibliothèques de traitement d'image en fonction de vos propres besoins. 🎜🎜Avec les deux exemples ci-dessus, vous pouvez facilement utiliser Golang pour effectuer un histogramme des couleurs et une binarisation des images. Ces méthodes de traitement d’images sont largement utilisées dans les domaines de la vision par ordinateur et de l’analyse d’images et peuvent nous aider à mieux comprendre et traiter les données d’images. Dans le même temps, Golang fournit une multitude de bibliothèques et de fonctions de traitement d'images, ce qui est très pratique pour notre travail de développement. 🎜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!