Cara mewarnakan dan mewarnakan imej berasingan menggunakan Golang

PHPz
Lepaskan: 2023-08-21 18:49:45
asal
1283 orang telah melayarinya

Cara mewarnakan dan mewarnakan imej berasingan menggunakan Golang

Cara menggunakan Golang untuk mewarna dan mengasingkan gambar

Abstrak: Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Golang untuk mewarnakan proses dan tona gambar yang berasingan. Kami akan menggunakan perpustakaan pemprosesan imej di Golang untuk melaksanakan fungsi ini dan menunjukkan proses pelaksanaan khusus melalui contoh kod.

  1. Pengenalan
    Dalam aplikasi pemprosesan imej moden, pemprosesan warna dan pemisahan ton imej adalah keperluan biasa. Pemprosesan warna boleh menjadikan warna gambar lebih terang dan terang, manakala pemisahan ton boleh memisahkan warna dalam gambar, menjadikan gambar kelihatan lebih artistik. Sebagai bahasa pengaturcaraan berprestasi tinggi dan ringkas, Golang menyediakan perpustakaan pemprosesan imej yang kaya yang boleh digunakan untuk melaksanakan fungsi ini.
  2. Gunakan Golang untuk mewarnakan gambar
    Pemprosesan warna bermaksud menukar warna gambar, seterusnya menukar ton keseluruhan gambar. Di Golang, anda boleh menggunakan pakej imej untuk melaksanakan operasi pemprosesan imej. Berikut ialah kod sampel ringkas yang menunjukkan cara menggunakan Golang untuk menskalakan warna kelabu imej:
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)
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula membuka fail imej bernama input.jpg melalui fungsi Buka pakej os. Kemudian gunakan fungsi Nyahkod pakej jpeg untuk menyahkod imej dan mendapatkan imej. Objek imej. Seterusnya, kami mencipta imej skala kelabu baharu menggunakan fungsi NewGray bagi pakej imej. Kemudian gunakan gelung berganda untuk melintasi piksel imej asal, kira nilai skala kelabu yang sepadan melalui nilai warna piksel dan tetapkannya sebagai nilai piksel imej skala kelabu baharu. Akhir sekali, gunakan fungsi Encode pakej jpeg untuk menyimpan imej skala kelabu ke fail output.jpg.

  1. Gunakan Golang untuk mengasingkan tona gambar
    Pemisahan ton merujuk kepada mengasingkan warna dalam gambar untuk membentuk kesan artistik. Di Golang, pemisahan rona boleh dicapai menggunakan fungsi penukaran warna bagi pakej imej/warna. Berikut ialah contoh kod yang menunjukkan cara untuk mengasingkan imej menggunakan 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)
    }

    // 创建一个新的彩色图片
    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)
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi RGBA bagi pakej imej/warna untuk memisahkan nilai warna piksel imej asal dan mencipta a Gambar warna baru. Kemudian, dengan melintasi piksel gambar asal, nilai warna R, G, dan B setiap piksel dipisahkan, dan nilai G dan B ditetapkan kepada 0, dengan itu merealisasikan operasi pemisahan warna bagi gambar. Akhir sekali, gunakan fungsi Encode pakej jpeg untuk menyimpan imej yang dipisahkan ke fail output.jpg.

  1. Kesimpulan
    Artikel ini memperkenalkan cara menggunakan Golang untuk memproses warna dan mewarnakan imej yang berasingan. Dengan menggunakan perpustakaan pemprosesan imej di Golang, kami boleh melaksanakan fungsi ini dengan mudah, dan kodnya ringkas dan cekap. Pembaca boleh melanjutkan dan mengoptimumkan kod sampel ini mengikut keperluan mereka sendiri untuk melaksanakan operasi pemprosesan imej yang lebih kompleks.

Atas ialah kandungan terperinci Cara mewarnakan dan mewarnakan imej berasingan menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan