Hi All, I'm trying to measure the "R" "G" and "B" in a camera photo. Basic idea is to scroll through each pixel and add up each color.
This is crashing with OutOfMemory half way through 640x480 camera image. Any ideas?
This is crashing with OutOfMemory half way through 640x480 camera image. Any ideas?
B4X:
Sub Camera1_PictureTaken (Data() As Byte)
Dim In As InputStream
In.InitializeFromBytesArray(Data, 0, Data.Length)
Dim bmp As Bitmap
bmp.Initialize2(In)
In.Close
Dim x As Int, y As Int, z As Int
Dim numPix As Long
Dim PixelColor As Int
numPix = bmp.Height * bmp.Width
Dim res(4) As Int
Dim ARGB(4) As Long
For x = 0 To bmp.Width - 1
For y = 0 To bmp.Height - 1
PixelColor = bmp.GetPixel(x,y)
res(0) = Bit.UnsignedShiftRight(Bit.And(PixelColor, 0xff000000), 24)
res(1) = Bit.UnsignedShiftRight(Bit.And(PixelColor, 0xff0000), 16)
res(2) = Bit.UnsignedShiftRight(Bit.And(PixelColor, 0xff00), 8)
res(3) = Bit.And(PixelColor, 0xff)
' Log("ARGB = " & res(0) & "," & res(1) & "," & res(2) & "," & res(3))
For z = 0 To 3
ARGB(z) = ARGB(z) + res(z)
Next
Next
Log("Line " & x & " / " & bmp.Height)
Next
For z = 0 To 3
ARGB(z) = ARGB(z) / numPix
Next
End Sub