Rumah > Artikel > pembangunan bahagian belakang > Pemprosesan imej Golang: pelajari cara melakukan pengekstrakan tepi dan pengesanan bentuk pada imej
Pemprosesan Imej Golang: Ketahui cara melakukan pengekstrakan tepi dan pengesanan bentuk pada imej
Pengenalan:
Dalam bidang pemprosesan imej, pengekstrakan tepi dan pengesanan bentuk adalah salah satu teknologi penting. Dengan mengekstrak tepi imej, maklumat kontur objek boleh diperoleh, yang kemudiannya boleh digunakan untuk pengesanan bentuk dan pengecaman. Artikel ini akan memperkenalkan cara menggunakan Golang untuk pengekstrakan tepi dan pengesanan bentuk imej, dan menyediakan contoh kod yang berkaitan untuk rujukan pembaca.
1. Pasang dan konfigurasikan persekitaran Golang
Sebelum kita mula, kita perlu memasang dan mengkonfigurasi persekitaran pembangunan Golang supaya kita boleh menjalankan dan menyusun kod Go dengan lancar. Pembaca boleh melawati laman web rasmi Golang (https://golang.org) dan memasang serta mengkonfigurasi mengikut panduan rasmi.
2. Import perpustakaan pemprosesan imej
Bahasa Go menyediakan beberapa perpustakaan pemprosesan imej yang sangat baik, seperti GoCV dan Pigo. Artikel ini akan menggunakan pustaka GoCV untuk pengekstrakan tepi imej dan operasi pengesanan bentuk. Pembaca boleh memuat turun dan memasang pustaka GoCV melalui arahan 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
Pengekstrakan tepi imej merujuk kepada mengekstrak maklumat tepi objek daripada imej. Di sini kami menggunakan algoritma Canny untuk pengesanan tepi, yang telah dilaksanakan dalam pustaka GoCV. Berikut ialah kod contoh mudah:
rrreee
IMRead
dan kemudian menukarnya kepada imej skala kelabu. Seterusnya, kami menggunakan algoritma Canny untuk pengesanan tepi dan memaparkan hasilnya dalam tetingkap baharu. 🎜🎜4. Pengesanan Bentuk🎜Pengesanan bentuk merujuk kepada pengesanan bentuk tertentu daripada imej, seperti bulatan, segi empat tepat, dsb. Dalam pustaka GoCV, kita boleh menggunakan fungsi FindContours
untuk melaksanakan pengesanan bentuk. Berikut ialah contoh kod mudah: 🎜rrreee🎜Dalam kod di atas, kami mula-mula menggunakan fungsi IMRead
untuk membaca imej skala kelabu daripada fail, dan kemudian melakukan Gaussian blur pada imej. Seterusnya, kami menggunakan teknologi binarization (Threshold) untuk menukar imej kepada imej binari. Akhir sekali, kami menggunakan fungsi FindContours
untuk mencari kontur dalam imej dan mengira luas setiap kontur. 🎜🎜Kesimpulan: 🎜Melalui pengenalan dan contoh kod artikel ini, pembaca boleh mempelajari cara menggunakan Golang untuk pengekstrakan tepi imej dan operasi pengesanan bentuk. Dengan menguasai teknologi ini, pembaca boleh mengaplikasikannya pada pelbagai senario dalam bidang pemprosesan imej, seperti pengecaman objek, pembahagian imej, dsb. Semoga artikel ini bermanfaat kepada pembaca. 🎜Atas ialah kandungan terperinci Pemprosesan imej Golang: pelajari cara melakukan pengekstrakan tepi dan pengesanan bentuk pada imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!