Rumah > Artikel > pembangunan bahagian belakang > Golang melaksanakan penjanaan imej kecil imej dan kaedah pengesanan muka
Kaedah Golang untuk melaksanakan penjanaan lakaran kenit imej dan pengesanan muka
Abstrak:
Artikel ini memperkenalkan cara menggunakan Golang untuk melaksanakan penjanaan lakaran kecil imej dan pengesanan muka. Pertama, kami akan menjana lakaran kenit melalui pustaka pemprosesan imej Golang dan menyimpan lakaran kenit ke cakera setempat. Kemudian, kami akan memperkenalkan cara menggunakan pustaka pengesanan muka Golang untuk mengesan wajah dalam lakaran kecil yang dijana dan mengembalikan hasil pengesanan.
package main import ( "fmt" "image" "image/jpeg" "log" "os" "github.com/nfnt/resize" ) func main() { inFile, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer inFile.Close() // Decode the image srcImg, _, err := image.Decode(inFile) if err != nil { log.Fatal(err) } // Resize the image thumbnail := resize.Resize(200, 0, srcImg, resize.Lanczos3) // Create a new file for the thumbnail outFile, err := os.Create("thumbnail.jpg") if err != nil { log.Fatal(err) } defer outFile.Close() // Encode the thumbnail to JPEG format err = jpeg.Encode(outFile, thumbnail, &jpeg.Options{jpeg.DefaultQuality}) if err != nil { log.Fatal(err) } fmt.Println("Thumbnail generated successfully!") }
Kod ini mula-mula membuka fail imej bernama "input.jpg" dan menyahkodnya. Kemudian, gunakan perpustakaan ubah saiz untuk menskalakan imej kepada saiz tertentu (lebar 200 piksel dalam contoh ini, ketinggian dikira secara automatik). Selepas itu, simpan lakaran kecil yang dijana pada fail bernama "thumbnail.jpg". Akhir sekali, mesej gesaan yang menunjukkan penjanaan lakaran kecil berjaya dikeluarkan.
package main import ( "fmt" "image" "image/jpeg" "log" "os" "github.com/esimov/stackblur-go" "github.com/Kagami/go-face" ) func main() { // Load the face detection model model, err := face.NewRecognizer("models") if err != nil { log.Fatal(err) } defer model.Close() // Open the thumbnail image file inFile, err := os.Open("thumbnail.jpg") if err != nil { log.Fatal(err) } defer inFile.Close() // Decode the thumbnail image srcImg, _, err := image.Decode(inFile) if err != nil { log.Fatal(err) } // Blur the image for better face detection results stackblur.Process(srcImg, uint32(srcImg.Bounds().Dx()), uint32(srcImg.Bounds().Dy()), 20) // Convert the image to grayscale grayImg, err := face.ConvertImageToGray(srcImg) if err != nil { log.Fatal(err) } // Detect faces in the image faces, err := model.Recognize(grayImg, 1.5, 3) if err != nil { log.Fatal(err) } fmt.Printf("Detected %d face(s) in the thumbnail ", len(faces)) // Draw rectangles around the detected faces for _, f := range faces { x, y, w, h := f.Rectangle() faceImg := face.Crop(grayImg, face.Rect(x, y, x+w, y+h)) outFile, err := os.Create("face.jpg") if err != nil { log.Fatal(err) } defer outFile.Close() // Encode the face image to JPEG format err = jpeg.Encode(outFile, faceImg, &jpeg.Options{jpeg.DefaultQuality}) if err != nil { log.Fatal(err) } fmt.Printf("Face detected at coordinates (%d,%d,%d,%d) ", x, y, w, h) } }
Kod ini mula-mula memuatkan model pengesanan muka dan membuka fail imej bernama "thumbnail.jpg". Kemudian, lakaran kecil dikaburkan dan skala kelabu ditukar untuk meningkatkan ketepatan hasil pengesanan muka. Seterusnya, gunakan pustaka pengesanan wajah untuk mengesan wajah dalam lakaran kecil dan mengeluarkan bilangan wajah yang dikesan. Akhir sekali, muka yang dikesan ditandakan dalam bentuk kotak segi empat tepat dan disimpan ke fail bernama "face.jpg".
Ringkasan:
Artikel ini memperkenalkan cara menggunakan Golang untuk mencapai penjanaan imej kecil imej dan pengesanan muka. Melalui sokongan perpustakaan pihak ketiga, kami boleh melaksanakan fungsi ini dengan mudah di Golang. Menggunakan teknik ini, kami boleh memproses imej dan mengekstrak maklumat berguna daripadanya, seperti menjana imej kecil dan mengesan wajah. Saya harap artikel ini dapat membantu anda, terima kasih kerana membaca!
Atas ialah kandungan terperinci Golang melaksanakan penjanaan imej kecil imej dan kaedah pengesanan muka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!