Golang의 이미지 썸네일 생성 및 얼굴 인식 구현 방법
요약:
이 글에서는 Golang을 사용하여 이미지 썸네일 생성 및 얼굴 인식을 구현하는 방법을 소개합니다. 먼저 Golang의 이미지 처리 라이브러리를 통해 썸네일을 생성하고 해당 썸네일을 로컬 디스크에 저장합니다. 그런 다음 Golang의 얼굴 감지 라이브러리를 사용하여 생성된 썸네일에서 얼굴을 감지하고 감지 결과를 반환하는 방법을 소개합니다.
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!") }
이 코드는 먼저 "input.jpg"라는 이미지 파일을 열고 디코딩합니다. 그런 다음 크기 조정 라이브러리를 사용하여 이미지를 특정 크기(이 예에서는 너비 200픽셀, 높이는 자동으로 계산됨)로 조정합니다. 그런 다음 생성된 썸네일을 "thumbnail.jpg"라는 파일에 저장합니다. 마지막으로 썸네일 생성이 성공했다는 메시지가 출력됩니다.
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) } }
이 코드는 먼저 얼굴 감지 모델을 로드하고 "thumbnail.jpg"라는 이미지 파일을 엽니다. 그런 다음 얼굴 감지 결과의 정확도를 높이기 위해 썸네일을 흐리게 처리하고 회색조로 변환합니다. 다음으로, 얼굴 감지 라이브러리를 사용하여 썸네일에서 얼굴을 감지하고 감지된 얼굴 수를 출력합니다. 마지막으로 감지된 얼굴은 직사각형 상자 형태로 표시되고 "face.jpg"라는 파일에 저장됩니다.
요약:
이 글에서는 Golang을 사용하여 이미지 썸네일 생성 및 얼굴 인식을 달성하는 방법을 소개합니다. 타사 라이브러리의 지원을 통해 Golang에서 이러한 기능을 쉽게 구현할 수 있습니다. 이러한 기술을 사용하여 이미지를 처리하고 이미지에서 썸네일 생성, 얼굴 감지 등 유용한 정보를 추출할 수 있습니다. 이 글이 여러분에게 도움이 되기를 바랍니다. 읽어주셔서 감사합니다!
위 내용은 Golang은 이미지 썸네일 생성 및 얼굴 감지 방법을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!