Golang 画像処理: カラー調整とカラー マッピングを実行する方法を学ぶ
はじめに:
画像処理の分野では、カラー調整は非常に重要な操作です。 。画像の色を調整することで、画像の外観や雰囲気を変え、より魅力的なものにすることができます。この記事では、Golang を使用してカラー調整とカラー マッピングを行う方法とコード例を学びます。
1. Golang 画像処理の基礎
色調整を学習する前に、Golang 画像処理の基本的な知識を理解する必要があります。まず、Golang 画像処理ライブラリをインポートする必要があります。
import ( "image" "image/color" "image/jpeg" "os" )
その後、画像を開いて、Decode
関数を使用してそれを Golang 画像オブジェクトにデコードできます。
file, err := os.Open("input.jpg") if err != nil { panic(err) } defer file.Close() img, err := jpeg.Decode(file) if err != nil { panic(err) }
上記のコードにより、input.jpg
という名前の画像を Golang 画像オブジェクト img
にデコードすることに成功しました。次に、画像オブジェクトに対してカラー調整とカラー マッピング操作を実行できます。
2. 色の調整
func adjustBrightness(img image.Image, value float64) image.Image { bounds := img.Bounds() width, height := bounds.Max.X, bounds.Max.Y newImg := image.NewRGBA(bounds) for x := 0; x < width; x++ { for y := 0; y < height; y++ { r, g, b, a := img.At(x, y).RGBA() gray := (r + g + b) / 3 newR := clamp(uint32(float64(r) + value*float64(gray))) newG := clamp(uint32(float64(g) + value*float64(gray))) newB := clamp(uint32(float64(b) + value*float64(gray))) newImg.Set(x, y, color.RGBA{R: uint8(newR), G: uint8(newG), B: uint8(newB), A: uint8(a)}) } } return newImg } func clamp(value uint32) uint8 { if value > 255 { return 255 } if value < 0 { return 0 } return uint8(value) }
上記のコードでは、adjustBrightness
関数は画像オブジェクトと明るさの値を受け取り、二重ループを使用して画像の各ピクセルを走査し、 R、G、B コンポーネントが調整され、最終的に調整された画像オブジェクトが返されます。
func adjustContrast(img image.Image, value float64) image.Image { bounds := img.Bounds() width, height := bounds.Max.X, bounds.Max.Y newImg := image.NewRGBA(bounds) for x := 0; x < width; x++ { for y := 0; y < height; y++ { r, g, b, a := img.At(x, y).RGBA() newR := clamp(uint32((float64(r) - 0.5*65535) * value + 0.5*65535)) newG := clamp(uint32((float64(g) - 0.5*65535) * value + 0.5*65535)) newB := clamp(uint32((float64(b) - 0.5*65535) * value + 0.5*65535)) newImg.Set(x, y, color.RGBA{R: uint8(newR), G: uint8(newG), B: uint8(newB), A: uint8(a)}) } } return newImg }
上記のコードでは、adjustContrast
関数は画像オブジェクトとコントラスト値を受け取り、二重ループを使用して画像の各ピクセルを走査し、 R、G、B コンポーネントが調整され、最終的に調整された画像オブジェクトが返されます。
3. カラー マッピング
カラー マッピングとは、元の画像の 1 つまたはいくつかの色を新しい色の値にマッピングすることによって、画像の外観と色を変更することを指します。以下のコードは、画像内の赤を青にマッピングする方法を示しています。
func colorMap(img image.Image, oldColor, newColor color.RGBA) image.Image { bounds := img.Bounds() width, height := bounds.Max.X, bounds.Max.Y newImg := image.NewRGBA(bounds) for x := 0; x < width; x++ { for y := 0; y < height; y++ { r, g, b, a := img.At(x, y).RGBA() if r == uint32(oldColor.R)*65535 && g == uint32(oldColor.G)*65535 && b == uint32(oldColor.B)*65535 { newImg.Set(x, y, newColor) } else { newImg.Set(x, y, color.RGBA{R: uint8(r / 256), G: uint8(g / 256), B: uint8(b / 256), A: uint8(a / 256)}) } } } return newImg }
上記のコードでは、colorMap
関数は画像オブジェクト、古い色と新しい色を受け入れ、二重ループを使用して画像の各ピクセルを走査し、現在のピクセルの色 古い色と一致し、一致する場合はピクセルの色を新しい色に変更し、最後にカラーマップされた画像オブジェクトを返します。
結論
この記事を学習することで、Golang を使用してカラー調整とカラー マッピングを行う方法を学びました。画像の明るさ、コントラスト、マッピングカラーを調整することで、画像の外観と色を変更して、より魅力的なものにすることができます。この記事が皆さんの Golang 画像処理の学習と実践に役立つことを願っています。
以上がGolang 画像処理: カラー調整とカラー マッピングの方法を学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。