[go] go 언어에서의 색상 히스토그램 분석

이번에는 go 언어를 사용하여 이미지의 색상 히스토그램을 분석하는 방법에 대해 알아보겠습니다.

1. 필요 라이브러리 임포트하기

가장 먼저, 이미지 처리를 위한 라이브러리를 임포트해야 합니다. go 언어에서는 이미지 처리를 위해 imageimage/color 패키지를 사용할 수 있습니다.

import (
    "image"
    _ "image/jpeg"
    "os"
)

2. 이미지 파일 열기

분석할 이미지 파일을 열어야 합니다. 아래는 파일을 열고 이미지로 디코딩하는 예제 코드입니다.

file, err := os.Open("image.jpg")
if err != nil {
    panic(err)
}
defer file.Close()

img, _, err := image.Decode(file)
if err != nil {
    panic(err)
}

3. 색상 히스토그램 생성

이미지의 색상 히스토그램을 생성하는 함수를 작성해보겠습니다.

func createHistogram(img image.Image) map[color.RGBA]int {
    histogram := make(map[color.RGBA]int)

    bounds := img.Bounds()
    for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
        for x := bounds.Min.X; x < bounds.Max.X; x++ {
            r, g, b, _ := img.At(x, y).RGBA()
            c := color.RGBA{uint8(r >> 8), uint8(g >> 8), uint8(b >> 8), 0}
            histogram[c]++
        }
    }

    return histogram
}

4. 결과 출력하기

생성된 히스토그램을 출력하여 분석 결과를 확인할 수 있습니다.

func main() {
    histogram := createHistogram(img)
    for c, count := range histogram {
        fmt.Printf("색상: %v, 픽셀 수: %d\n", c, count)
    }
}

위 코드를 실행하면 이미지의 각 색상에 대한 픽셀 수를 확인할 수 있습니다.

이상으로 go 언어를 사용하여 이미지의 색상 히스토그램을 분석하는 방법에 대해 알아보았습니다. Python이나 다른 언어와 비교하여 어떤 부분이 우수한지 확인해 보시기 바랍니다.

참고 자료