[go] go 언어에서의 이미지 흑백 처리

이미지 처리는 소프트웨어 개발에서 흔히 사용되는 작업입니다. 이번에는 Go 언어를 사용하여 이미지를 흑백으로 변환하는 방법에 대해 알아보겠습니다.

이미지 불러오기

가장 먼저, 이미지를 불러와야 합니다. Go 언어에서는 image 패키지를 사용하여 이미지를 불러올 수 있습니다. 아래는 이미지를 불러오는 예시 코드입니다.

package main

import (
	"image"
	_ "image/jpeg" // JPEG 지원
	"image/png" // PNG 지원
	"os"
)

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

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

위의 코드에서는 JPEG 및 PNG 형식의 이미지를 불러올 수 있는 방법을 보여줍니다. image.Decode 함수를 사용하여 이미지를 불러올 수 있습니다.

이미지 흑백 처리

이제 이미지를 흑백으로 변환하는 방법에 대해 알아보겠습니다. Go 언어에서는 image 패키지의 메서드를 사용하여 이미지를 처리할 수 있습니다. 아래는 이미지를 흑백으로 변환하는 예시 코드입니다.

func grayscaleImage(src image.Image) *image.Gray {
	bounds := src.Bounds()
	gray := image.NewGray(bounds)

	for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
		for x := bounds.Min.X; x < bounds.Max.X; x++ {
			oldPixel := src.At(x, y)
			grayPixel := color.GrayModel.Convert(oldPixel)
			gray.Set(x, y, grayPixel)
		}
	}

	return gray
}

위의 코드에서는 grayscaleImage 함수를 사용하여 입력 이미지를 흑백 이미지로 변환합니다. 이 코드는 입력 이미지를 순회하면서 각 픽셀을 회색으로 변환합니다.

흑백 이미지 저장

마지막으로, 흑백 이미지를 저장하는 방법에 대해 알아보겠습니다. Go 언어에서는 image/png 패키지를 사용하여 이미지를 저장할 수 있습니다. 아래는 흑백 이미지를 저장하는 예시 코드입니다.

func saveImage(img image.Image, filename string) {
	file, err := os.Create(filename)
	if err != nil {
		panic(err)
	}
	defer file.Close()

	err = png.Encode(file, img)
	if err != nil {
		panic(err)
	}
}

위의 코드에서는 saveImage 함수를 사용하여 흑백 이미지를 파일로 저장합니다. 이 코드는 png.Encode 함수를 사용하여 이미지를 PNG 파일로 저장합니다.

이렇게하면 Go 언어를 사용하여 이미지를 흑백으로 처리할 수 있습니다. 이미지 처리에 대한 더 자세한 정보는 공식 문서에서 확인할 수 있습니다.