Golang을 사용하여 그림 색상 처리 및 톤 분리하는 방법
요약: 이 기사에서는 Golang 프로그래밍 언어를 사용하여 그림 색상 처리 및 톤 분리하는 방법을 소개합니다. Golang의 이미지 처리 라이브러리를 사용하여 이러한 기능을 구현하고 코드 예제를 통해 구체적인 구현 프로세스를 보여줍니다.
package main import ( "image" "image/color" "image/jpeg" "log" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图片 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 创建一个新的灰度化图片 grayImg := image.NewGray(img.Bounds()) // 遍历图片像素,将每个像素灰度化 for x := 0; x < img.Bounds().Max.X; x++ { for y := 0; y < img.Bounds().Max.Y; y++ { c := img.At(x, y) gray := color.GrayModel.Convert(c) grayImg.Set(x, y, gray) } } // 保存灰度化后的图片 outFile, err := os.Create("output.jpg") if err != nil { log.Fatal(err) } defer outFile.Close() jpeg.Encode(outFile, grayImg, nil) }
위 코드에서는 먼저 os 패키지의 Open 함수를 통해 input.jpg라는 이미지 파일을 엽니다. 그런 다음 jpeg 패키지의 Decode 함수를 사용하여 이미지를 디코딩하고 image.Image 객체를 얻습니다. 다음으로 이미지 패키지의 NewGray 함수를 사용하여 새로운 회색조 이미지를 생성합니다. 그런 다음 이중 루프를 사용하여 원본 이미지의 픽셀을 순회하고 픽셀의 색상 값을 통해 해당 회색조 값을 계산하고 이를 새 회색조 이미지의 픽셀 값으로 설정합니다. 마지막으로 jpeg 패키지의 Encode 기능을 사용하여 회색조 이미지를 output.jpg 파일에 저장합니다.
package main import ( "image" "image/color" "image/jpeg" "log" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图片 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 创建一个新的彩色图片 colorImg := image.NewRGBA(img.Bounds()) // 遍历图片像素,将每个像素的R、G、B颜色值分离出来 for x := 0; x < img.Bounds().Max.X; x++ { for y := 0; y < img.Bounds().Max.Y; y++ { c := img.At(x, y) r, g, b, _ := c.RGBA() colorImg.Set(x, y, color.RGBA{R: uint8(r), G: 0, B: 0}) } } // 保存分离后的图片 outFile, err := os.Create("output.jpg") if err != nil { log.Fatal(err) } defer outFile.Close() jpeg.Encode(outFile, colorImg, nil) }
위 코드에서는 image/color 패키지의 RGBA 함수를 사용하여 원본 이미지의 픽셀 색상 값을 분리하고 생성했습니다. 새로운 컬러 사진. 그런 다음 원본 사진의 픽셀을 순회하여 각 픽셀의 R, G, B 색상 값을 분리하고 G, B 값을 0으로 설정하여 색상 분리 동작을 구현합니다. 그림. 마지막으로 jpeg 패키지의 Encode 기능을 이용하여 분리된 이미지를 output.jpg 파일로 저장합니다.
위 내용은 Golang을 사용하여 이미지의 색상 처리 및 톤 분리 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!