go - 如何在 Go 中访问 YCbCr 颜色属性

标签 go

我正在迭代图像的像素,尝试获取各个颜色值并对它们进行平均。当我这样做时:

bounds := img.Bounds()

for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
  for x := bounds.Min.X; x < bounds.Max.X; x++ {
    fmt.Println(reflect.TypeOf(img.At(x, y)))     
  }
}

我得到color.YCbCr十亿次。如果我在没有 reflect.TypeOf 的情况下打印它,我会得到如下结果:

{154 135 124}   
{153 135 124}   
{152 135 124}   
{152 135 124}   
{151 135 124}   
{149 135 124}   
{147 135 124}   

我需要能够访问单独的 Y、Cb 和 Cr 颜色,但是当我尝试 img.At(x, y).Cbimg.At(x, y)['Y'] 甚至 img.At(x, y)[0],我收到各种编译时错误,告诉我 color.Color 没有这些方法或不支持索引。

最佳答案

添加此内容以供将来引用,但要访问底层 color.YCbCr,您只需键入断言值,例如:

for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
    for x := bounds.Min.X; x < bounds.Max.X; x++ {
        if c, ok := img.At(x, y).(color.YCbCr); ok {
            fmt.Println(c.Y, c.Cb, c.Cr)
        } else {
            fmt.Println(reflect.TypeOf(img.At(x, y)))
        }
    }
}

关于go - 如何在 Go 中访问 YCbCr 颜色属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216985/

相关文章:

sql - 执行查询 sql 时出错 - Golang

mongodb - 在 MongoDB 中基于 ID 对两个集合执行连接

json - 同一个 Go 结构成员上的多个标签

go - 如何发布一个 Go 包

Golang 解码 JSON 响应,然后使用 Struct 字段名称编码

go - .go 使用 ufw 禁止 ip

unit-testing - 为什么数据库类型在 GO 中不是接口(interface)

go - 如何在golang中列出组合可能性

golang ssh拨号超时

php - http 将 url 部分路由到不同的服务器