Maison  >  Article  >  développement back-end  >  Traitement d'images Golang : apprenez à effectuer une extraction des bords et une détection de forme sur des images

Traitement d'images Golang : apprenez à effectuer une extraction des bords et une détection de forme sur des images

WBOY
WBOYoriginal
2023-08-18 13:12:30886parcourir

Traitement dimages Golang : apprenez à effectuer une extraction des bords et une détection de forme sur des images

Traitement d'image Golang : Apprenez à effectuer une extraction des bords et une détection de forme sur des images

Introduction :
Dans le domaine du traitement d'image, l'extraction des bords et la détection de forme sont l'une des technologies importantes. En extrayant les bords de l'image, les informations de contour de l'objet peuvent être obtenues, qui peuvent ensuite être utilisées pour la détection et la reconnaissance de forme. Cet article expliquera comment utiliser Golang pour l'extraction des bords et la détection de forme des images, et fournira des exemples de code pertinents pour référence aux lecteurs.

1. Installer et configurer l'environnement Golang
Avant de commencer, nous devons installer et configurer l'environnement de développement Golang afin de pouvoir exécuter et compiler le code Go en douceur. Les lecteurs peuvent visiter le site officiel de Golang (https://golang.org) et installer et configurer conformément aux instructions officielles.

2. Importer une bibliothèque de traitement d'images
Le langage Go fournit d'excellentes bibliothèques de traitement d'images, telles que GoCV et Pigo. Cet article utilisera la bibliothèque GoCV pour les opérations d’extraction des bords d’image et de détection de forme. Les lecteurs peuvent télécharger et installer la bibliothèque GoCV via la commande go get -u -d gocv.io/x/gocv. go get -u -d gocv.io/x/gocv来下载和安装GoCV库。

三、图像边缘提取
图像边缘提取是指从图像中提取出物体的边缘信息。这里我们使用Canny算法进行边缘检测,该算法在GoCV库中已经实现。下面是一个简单的示例代码:

package main

import (
    "fmt"
    "gocv.io/x/gocv"
)

func main() {
    img := gocv.IMRead("input.jpg", gocv.IMReadColor)
    defer img.Close()

    gray := gocv.NewMat()
    defer gray.Close()

    gocv.CvtColor(img, &gray, gocv.ColorBGRToGray)

    edges := gocv.NewMat()
    defer edges.Close()

    gocv.Canny(gray, &edges, 75, 200)

    window := gocv.NewWindow("Canny")
    defer window.Close()

    window.SetWindowTitle("Canny")
    window.IMShow(edges)
    window.WaitKey(0)
}

在上述代码中,我们首先使用IMRead函数从文件中读取一张图像,然后将其转换为灰度图像。接下来,我们使用Canny算法进行边缘检测,并将结果显示在一个新窗口中。

四、形状检测
形状检测是指从图像中检测出特定的形状,例如圆形、矩形等。在GoCV库中,我们可以使用FindContours函数来实现形状检测。下面是一个简单的示例代码:

package main

import (
    "fmt"
    "gocv.io/x/gocv"
)

func main() {
    img := gocv.IMRead("input.jpg", gocv.IMReadGrayScale)
    defer img.Close()

    blur := gocv.NewMat()
    defer blur.Close()

    gocv.GaussianBlur(img, &blur, image.Pt(7, 7), 0, 0, gocv.BorderDefault)

    thresh := gocv.NewMat()
    defer thresh.Close()

    gocv.Threshold(blur, &thresh, 127, 255, gocv.ThresholdBinary)

    contours := gocv.FindContours(thresh, gocv.RetrievalExternal, gocv.ChainApproxSimple)

    for _, contour := range contours {
        area := gocv.ContourArea(contour)
        fmt.Println("Contour area:", area)
    }
}

在上述代码中,我们首先使用IMRead函数从文件中读取一张灰度图像,然后对图像进行高斯模糊处理。接下来,我们使用二值化技术(Threshold)将图像转换为二值图像。最后,我们使用FindContours

3. Extraction des bords de l'image

L'extraction des bords de l'image fait référence à l'extraction des informations sur les bords des objets de l'image. Ici, nous utilisons l'algorithme Canny pour la détection des contours, qui a été implémenté dans la bibliothèque GoCV. Voici un exemple de code simple :
rrreee

Dans le code ci-dessus, nous lisons d'abord une image à partir d'un fichier à l'aide de la fonction IMRead, puis la convertissons en une image en niveaux de gris. Ensuite, nous utilisons l'algorithme Canny pour la détection des contours et affichons les résultats dans une nouvelle fenêtre. 🎜🎜4. Détection de forme🎜La détection de forme fait référence à la détection de formes spécifiques à partir d'images, telles que des cercles, des rectangles, etc. Dans la bibliothèque GoCV, nous pouvons utiliser la fonction FindContours pour implémenter la détection de forme. Voici un exemple de code simple : 🎜rrreee🎜Dans le code ci-dessus, nous lisons d'abord une image en niveaux de gris à partir du fichier à l'aide de la fonction IMRead, puis effectuons un flou gaussien sur l'image. Ensuite, nous utilisons la technologie de binarisation (Seuil) pour convertir l'image en image binaire. Enfin, nous utilisons la fonction FindContours pour rechercher les contours dans l'image et calculer l'aire de chaque contour. 🎜🎜Conclusion : 🎜Grâce à l'introduction et à l'exemple de code de cet article, les lecteurs peuvent apprendre à utiliser Golang pour les opérations d'extraction de bords d'image et de détection de forme. En maîtrisant ces technologies, les lecteurs peuvent les appliquer à divers scénarios dans le domaine du traitement d'images, comme la reconnaissance d'objets, la segmentation d'images, etc. J'espère que cet article sera utile aux lecteurs. 🎜

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