


Manipulasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej
Operasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada gambar
Pengenalan: Dalam bidang pemprosesan imej, keseimbangan warna dan penukaran warna adalah salah satu operasi yang biasa digunakan. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan keseimbangan warna dan penukaran warna gambar serta memberikan contoh kod yang sepadan.
1. Keseimbangan warna
Imbangan warna merujuk kepada melaraskan keamatan setiap saluran warna dalam imej untuk menjadikan warna keseluruhan imej lebih seragam dan semula jadi. Algoritma imbangan warna yang biasa digunakan termasuk imbangan kecerahan, imbangan putih dan penyamaan histogram.
- Imbangan Kecerahan
Imbangan kecerahan dicapai dengan melaraskan taburan kecerahan imej. Berikut ialah kod contoh mudah untuk mencapai keseimbangan kecerahan:
package main import ( "image" "image/color" "image/png" "os" ) func brightnessBalance(img image.Image) image.Image { width := img.Bounds().Dx() height := img.Bounds().Dy() balanceImg := image.NewRGBA(img.Bounds()) for y := 0; y < height; y++ { for x := 0; x < width; x++ { r, g, b, a := img.At(x, y).RGBA() r = r * 2 g = g * 2 b = b * 2 balanceImg.Set(x, y, color.RGBA{uint8(r), uint8(g), uint8(b), uint8(a)}) } } return balanceImg } func main() { file, err := os.Open("input.png") if err != nil { panic(err) } defer file.Close() img, _, err := image.Decode(file) if err != nil { panic(err) } balanceImg := brightnessBalance(img) outputFile, err := os.Create("output.png") if err != nil { panic(err) } defer outputFile.Close() err = png.Encode(outputFile, balanceImg) if err != nil { panic(err) } }
Dalam kod di atas, kami melingkari setiap piksel imej dan mendarabkan nilai saluran merah, hijau dan biru bagi setiap piksel dengan 2. Kecerahan keseluruhan ialah bertambah baik. Dengan memuatkan imej asal dan menyimpan imej yang diproses, kita boleh mendapatkan imej yang seimbang warna.
- White balance
White balance adalah untuk menghapuskan tuangan warna dalam gambar yang disebabkan oleh pencahayaan yang tidak sekata. Berikut ialah kod sampel mudah untuk mencapai imbangan putih:
package main import ( "image" "image/color" "image/png" "math" "os" ) func whiteBalance(img image.Image) image.Image { width := img.Bounds().Dx() height := img.Bounds().Dy() whiteBalanceImg := image.NewRGBA(img.Bounds()) var sumR, sumG, sumB float64 for y := 0; y < height; y++ { for x := 0; x < width; x++ { r, g, b, a := img.At(x, y).RGBA() sumR += math.Log(float64(r)) sumG += math.Log(float64(g)) sumB += math.Log(float64(b)) } } avgR := math.Exp(sumR / (float64(width * height))) avgG := math.Exp(sumG / (float64(width * height))) avgB := math.Exp(sumB / (float64(width * height))) for y := 0; y < height; y++ { for x := 0; x < width; x++ { r, g, b, a := img.At(x, y).RGBA() r = uint32(math.Log(float64(r)) * avgR / float64(r)) g = uint32(math.Log(float64(g)) * avgG / float64(g)) b = uint32(math.Log(float64(b)) * avgB / float64(b)) whiteBalanceImg.Set(x, y, color.RGBA{uint8(r), uint8(g), uint8(b), uint8(a)}) } } return whiteBalanceImg } func main() { file, err := os.Open("input.png") if err != nil { panic(err) } defer file.Close() img, _, err := image.Decode(file) if err != nil { panic(err) } whiteBalanceImg := whiteBalance(img) outputFile, err := os.Create("output.png") if err != nil { panic(err) } defer outputFile.Close() err = png.Encode(outputFile, whiteBalanceImg) if err != nil { panic(err) } }
Dalam kod di atas, kami mengira purata nilai logaritma semua piksel dalam imej dan mendarabkan nilai logaritma setiap piksel dengan purata. Operasi eksponen dilakukan untuk mencapai imbangan putih. Begitu juga, dengan memuatkan imej asal dan menyimpan imej yang diproses, kita boleh mendapatkan imej seimbang putih.
2. Penukaran warna
Penukaran warna merujuk kepada menukar warna dalam satu ruang warna kepada warna dalam ruang warna yang lain. Penukaran warna yang biasa digunakan termasuk RGB kepada HSV dan RGB kepada YUV.
- Penukaran RGB ke HSV
RGB dan HSV ialah dua ruang warna biasa RGB digunakan untuk mewakili tiga komponen warna merah, hijau dan biru, dan HSV digunakan untuk mewakili tiga sifat warna: rona, ketepuan. dan kecerahan.
Berikut ialah contoh kod mudah untuk menukar warna RGB kepada warna HSV:
package main import ( "fmt" "image/color" ) func rgbToHsv(r, g, b uint8) (uint16, uint8, uint8) { var h, s, v uint16 max := uint16(r) if uint16(g) > max { max = uint16(g) } if uint16(b) > max { max = uint16(b) } min := uint16(r) if uint16(g) < min { min = uint16(g) } if uint16(b) < min { min = uint16(b) } v = max delta := max - min if max != 0 { s = uint8(delta) * 255 / uint8(max) } else { s = 0 } if delta != 0 { if max == uint16(r) { h = (uint16(g) - uint16(b)) * 60 / delta if uint16(g) < uint16(b) { h += 360 } } else if max == uint16(g) { h = (2 + (uint16(b)-uint16(r))/delta) * 60 } else { h = (4 + (uint16(r)-uint16(g))/delta) * 60 } } else { h = 0 } return h, s, uint8(v) } func main() { r := uint8(255) g := uint8(0) b := uint8(0) h, s, v := rgbToHsv(r, g, b) fmt.Printf("RGB(%d, %d, %d) -> HSV(%d, %d, %d) ", r, g, b, h, s, v) }
Dalam kod di atas, kami mengira komponen warna HSV yang sepadan berdasarkan nilai komponen warna RGB melalui satu siri pengiraan. nilai. Kami mengeluarkan warna RGB merah tulen dengan menetapkan nilai komponen RGB kepada nilai maksimum merah, dan mengira warna HSV yang sepadan.
- Penukaran RGB ke YUV
YUV juga merupakan ruang warna biasa, di mana Y mewakili kecerahan dan U dan V mewakili kroma. Berikut ialah contoh kod mudah untuk menukar warna RGB kepada warna YUV:
package main import ( "fmt" "image/color" ) func rgbToYuv(r, g, b uint8) (uint8, uint8, uint8) { y := uint8(float32(r)*0.299 + float32(g)*0.587 + float32(b)*0.114) u := uint8((-float32(r)*0.14713 - float32(g)*0.28886 + float32(b)*0.436 + 128) / 2) v := uint8((float32(r)*0.615 + float32(g)*0.51499 - float32(b)*0.10001 + 128) / 2) return y, u, v } func main() { r := uint8(255) g := uint8(0) b := uint8(0) y, u, v := rgbToYuv(r, g, b) fmt.Printf("RGB(%d, %d, %d) -> YUV(%d, %d, %d) ", r, g, b, y, u, v) }
Dalam kod di atas, kami mengira nilai komponen warna YUV yang sepadan melalui satu siri pengiraan berdasarkan nilai komponen warna RGB . Begitu juga, kami mengeluarkan warna RGB merah tulen dengan menetapkan nilai komponen RGB kepada nilai maksimum merah, dan mengira warna YUV yang sepadan.
Kesimpulan: Artikel ini memperkenalkan kaedah keseimbangan warna dan penukaran warna imej menggunakan bahasa Go, dan menyediakan contoh kod yang sepadan. Saya berharap pembaca akan mempunyai pemahaman yang lebih mendalam tentang operasi imej Golang melalui artikel ini dan dapat mengaplikasikannya pada projek sebenar.
Atas ialah kandungan terperinci Manipulasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara menggunakan Python untuk melaraskan keseimbangan warna gambar Pengenalan: Dalam pemprosesan imej, keseimbangan warna adalah operasi biasa. Dengan melaraskan keseimbangan warna imej, anda boleh menukar ton keseluruhan imej untuk menjadikannya lebih sesuai untuk keperluan anda. Artikel ini akan memperkenalkan cara menggunakan bahasa Python untuk melaraskan keseimbangan warna gambar, dan memberikan contoh kod untuk membantu pembaca melaksanakannya dengan cepat. 1. Prinsip imbangan warna Imbangan warna ialah operasi melaraskan keamatan saluran warna yang berbeza dalam imej untuk mencapai kesan warna keseluruhan. Secara umumnya, warna imej ditentukan oleh merah

Manipulasi imej Golang: Bagaimana untuk mencerminkan, memutar dan membalikkan imej 1. Pengenalan Pemprosesan imej adalah salah satu keperluan yang sering kita hadapi dalam banyak senario pembangunan. Di Golang, kita boleh menggunakan pakej imej untuk mengendalikan dan memproses imej. Artikel ini akan menumpukan pada cara menggunakan Golang untuk mencerminkan, memutar dan membalikkan imej serta memberikan contoh kod yang sepadan. 2. Operasi cerminan Mencerminkan gambar adalah untuk menukar susun atur kiri dan kanan gambar. Di Golang, anda boleh menggunakan Fli pakej cabutan

Operasi Imej PHP: Cara Mendapatkan Saiz dan Saiz Fail Imej Dalam membangunkan laman web atau aplikasi, kita selalunya perlu memproses imej. Mendapatkan saiz dan saiz fail imej adalah keperluan biasa, yang boleh dicapai dengan mudah melalui beberapa fungsi dalam PHP. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mendapatkan saiz dan saiz fail imej, dan melampirkan contoh kod. Dapatkan saiz imej Untuk mendapatkan saiz imej, anda boleh menggunakan fungsi terbina dalam PHP getimagesize(). Fungsi ini akan mengembalikan fail yang mengandungi saiz imej

Manipulasi imej Golang: Cara melakukan pemetaan kecerunan dan tekstur pada imej Gambaran Keseluruhan: Dalam pemprosesan imej, pemetaan kecerunan dan tekstur adalah dua teknik yang biasa digunakan. Kecerunan boleh mencipta peralihan kesan warna yang lancar, manakala pemetaan tekstur boleh memetakan imej tekstur kepada imej sasaran. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Golang untuk melaksanakan operasi pemetaan kecerunan dan tekstur pada imej. Kecerunan imej Pertama, kita perlu mengimport imej dan imej/warna pakej pemprosesan imej Golang. Berikut ialah kod sampel, dicipta oleh

Golang bersambung ke antara muka Baidu AI untuk merealisasikan fungsi analisis imej, mudah untuk bermula Ringkasan: Artikel ini akan memperkenalkan cara menggunakan Golang untuk menyambung ke antara muka Baidu AI untuk merealisasikan fungsi analisis imej. Kami akan menggunakan antara muka pengecaman imej yang disediakan oleh platform terbuka Baidu AI untuk melaksanakan pengecaman label dan fungsi pengecaman teks untuk imej dengan menulis kod dalam bahasa Golang. Sebelum memulakan kerja penyediaan, kami perlu menyediakan alatan dan bahan berikut: akaun pembangun Baidu untuk mendapatkan APIKey dan Se untuk mengakses antara muka AI Baidu

Manipulasi Imej Golang: Cara Melaraskan Kecerahan dan Kontras Pengenalan: Dalam pemprosesan imej, melaraskan kecerahan dan kontras imej adalah tugas yang sangat biasa. Dengan melaraskan kecerahan kita boleh menjadikan imej lebih cerah atau lebih gelap. Dan dengan melaraskan kontras, kita boleh menambah atau mengurangkan perbezaan warna dalam imej. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaraskan kecerahan dan kontras imej dan memberikan contoh kod. Import pakej yang diperlukan Pertama, kita perlu mengimport imej dan pakej warna untuk mengendalikan pembacaan dan penyimpanan imej.

Operasi imej Golang: Cara melakukan keseimbangan warna dan penukaran warna pada imej Pengenalan: Dalam bidang pemprosesan imej, keseimbangan warna dan penukaran warna adalah salah satu operasi yang biasa digunakan. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan keseimbangan warna dan penukaran warna gambar serta memberikan contoh kod yang sepadan. 1. Keseimbangan warna Keseimbangan warna merujuk kepada melaraskan keamatan setiap saluran warna dalam imej untuk menjadikan keseluruhan warna imej lebih seragam dan semula jadi. Algoritma imbangan warna yang biasa digunakan termasuk imbangan kecerahan, imbangan putih dan penyamaan histogram. Imbangan kecerahan Keseimbangan kecerahan dicapai dengan melaraskan graf

Panduan amalan ECharts dan golang: Petua untuk membuat carta statistik yang pelbagai Pengenalan: Dengan perkembangan Internet dan pertumbuhan data yang meletup, visualisasi data statistik telah menjadi bahagian yang amat diperlukan dalam semua lapisan masyarakat. Visualisasi data boleh membantu orang ramai memahami dan menganalisis data dengan lebih intuitif, dengan itu meningkatkan ketepatan dan kecekapan membuat keputusan. Antara alat visualisasi data, ECharts ialah perpustakaan carta statistik sumber terbuka yang berkuasa dan mudah digunakan, manakala golang ialah bahasa pengaturcaraan yang cekap, ringkas dan berkuasa. Artikel ini akan
