Golang 画像操作: 画像のグレースケールと明るさを調整する方法
はじめに:
画像処理のプロセスでは、多くの場合、さまざまな操作を実行する必要があります。画像のグレースケールや明るさの調整などの操作。 Golang では、サードパーティのライブラリを使用してこれらの操作を実現できます。この記事では、Golang を使用して画像のグレースケールと明るさを調整する方法を紹介し、対応するコード例を添付します。
1. 画像のグレースケール
画像のグレースケールは、カラー画像をグレースケール画像に変換するプロセスです。画像のグレースケールのプロセスでは、特定のアルゴリズムを通じて画像内の各ピクセルを対応するグレースケール値に変換する必要があります。次に、Golang のサードパーティ ライブラリ go-opencv を使用して画像のグレースケールを実現します。
まず、ターミナルに次のコマンドを入力して go-opencv ライブラリをインストールします:
go get -u github.com/lazywei/go-opencv
次に、画像をグレースケールする方法のコード例を示します:
package main import ( "fmt" "github.com/lazywei/go-opencv/opencv" ) func main() { imagePath := "test.jpg" // 通过go-opencv的LoadImage方法读取图片 image := opencv.LoadImage(imagePath) defer image.Release() // 使用go-opencv的CvtColor方法将图片转为灰度图像 grayImage := opencv.CreateImage(image.Width(), image.Height(), 8, 1) opencv.CvtColor(image, grayImage, opencv.CV_BGR2GRAY) // 保存灰度图像 outputPath := "output_gray.jpg" opencv.SaveImage(outputPath, grayImage, 0) fmt.Printf("Gray image saved to: %s ", outputPath) }
上記のコードは、最初にカラー イメージをロードし、次に CvtColor メソッドを使用してイメージをグレースケール イメージに変換します。最後に、生成されたグレースケール イメージを指定した出力パスに保存します。
2. 明るさの調整
明るさの調整とは、画像全体の明るさのレベルを変更することを指します。 Golang では、サードパーティ ライブラリ github.com/nfnt/resize を使用して画像の明るさを調整できます。
まず、ターミナルに次のコマンドを入力して nfnt/resize ライブラリをインストールします:
go get -u github.com/nfnt/resize
次に、画像の明るさ調整を実行する方法のコード例を示します:
package main import ( "fmt" "image" "image/color" "github.com/nfnt/resize" ) func main() { imagePath := "test.jpg" // 使用Golang内置的image包加载图片 img, err := loadImage(imagePath) if err != nil { fmt.Printf("Failed to load image: %s ", err) return } // 调整图片亮度 brightness := 50 brightImage := adjustBrightness(img, brightness) // 保存亮度调整后的图片 outputPath := "output_bright.jpg" saveImage(outputPath, brightImage) fmt.Printf("Brightness adjusted image saved to: %s ", outputPath) } // 加载图片 func loadImage(path string) (image.Image, error) { file, err := os.Open(path) if err != nil { return nil, err } defer file.Close() img, _, err := image.Decode(file) if err != nil { return nil, err } return img, nil } // 调整图片亮度 func adjustBrightness(img image.Image, brightness int) image.Image { b := img.Bounds() dst := image.NewRGBA(b) for y := 0; y < b.Max.Y; y++ { for x := 0; x < b.Max.X; x++ { oldColor := img.At(x, y) r, g, b, _ := oldColor.RGBA() newR := uint8(clamp(int(r)+brightness, 0, 0xffff)) newG := uint8(clamp(int(g)+brightness, 0, 0xffff)) newB := uint8(clamp(int(b)+brightness, 0, 0xffff)) newColor := color.RGBA{newR, newG, newB, 0xff} dst.Set(x, y, newColor) } } return dst } // 保存图片 func saveImage(path string, img image.Image) { file, err := os.Create(path) if err != nil { fmt.Printf("Failed to save image: %s ", err) return } defer file.Close() png.Encode(file, img) } // 辅助函数,限定数值在指定范围内 func clamp(value, min, max int) int { if value < min { return min } if value > max { return max } return value }
上記のコードは、最初にカラー画像をロードし、次に指定された明るさパラメータに従って画像の明るさを調整し、調整された画像を指定された出力パスに保存します。
概要:
この記事では、Golang を使用して画像をグレースケールおよび明るさを調整する方法を紹介します。サードパーティのライブラリを使用すると、これらの画像処理操作を簡単に実装できます。この記事のコード例が Golang での画像処理に役立つことを願っています。
以上がGolang の画像操作: 画像のグレースケールと明るさの調整方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。