2 回答

TA貢獻1821條經驗 獲得超6個贊
這是一個比您的解決方案更通用的解決方案。它使用圖像本身的尺寸而不是硬編碼值。
func imageToRGBA(img image.Image) []uint8 {
sz := img.Bounds()
raw := make([]uint8, (sz.Max.X-sz.Min.X)*(sz.Max.Y-sz.Min.Y)*4)
idx := 0
for y := sz.Min.Y; y < sz.Max.Y; y++ {
for x := sz.Min.X; x < sz.Max.X; x++ {
r, g, b, a := img.At(x, y).RGBA()
raw[idx], raw[idx+1], raw[idx+2], raw[idx+3] = uint8(r), uint8(g), uint8(b), uint8(a)
idx += 4
}
}
return raw
}

TA貢獻1856條經驗 獲得超17個贊
我找到了一個解決方案:
請注意,這會在 x 軸上復制圖像中的值,并且 x 最大值為 512!
const FeatureVectorDimensionLength = 512
func imageToRaw(img image.Image) [2048]byte {
var b [FeatureVectorDimensionLength*4]byte
for i := 0; i < FeatureVectorDimensionLength; i++ {
nrgba := img.At(i, 0).(color.NRGBA)
idx := i*4
b[idx], b[idx+1], b[idx+2], b[idx+3] = nrgba.R, nrgba.G, nrgba.B, nrgba.A
}
return b
}
- 2 回答
- 0 關注
- 252 瀏覽
添加回答
舉報