我是围棋新手,正在努力提高我的技能。目前我正在处理图像,我需要拥有图像的所有像素的红色值。我知道我可以使用下面的代码来实现这一点,但对我来说似乎很慢(~485 毫秒),
pixList := make([]uint8, width*height)
for y := 0; y < height; y++ {
for x := 0; x < width; x++ {
r, _, _, _ := img.At(x, y).RGBA()
var rNew uint8 = uint8(float32(r)*(255.0/65535.0))
pixList[(x*height)+y] = rNew
}
}
有没有更快的方法来做到这一点?任何内置函数可以一次获取所有像素值?
编辑:我现在使用 Pix 来获取所有像素数据,但我的 Pix 列表仍然没有给出我正在寻找的内容。
新代码:
pixList := img.(*image.Paletted).Pix
newPixList := make([]uint8, width*height)
fmt.Println(len(pixList))//gives width*height, shouldn't it be width*height*4?
for index := 0; index < width*height; index++ {
newPixList[index] = pixList[index*4]//this part gives index out of range error, because the pixList is length of width*height, i dunno why
}
我认为它不是我的图像,因为它是 rgba 图像,也许转换可以工作。有任何想法吗?
慕桂英546537
相关分类