Tree Rings- automatically counting on photo of trunk csa.
An attempt to count annual growth rings from a photo.
WindowWidth =1008
WindowHeight = 750
nomainwin
dim pixels( 1000), integral( 1000)
graphicbox #w.gb, 1, 1, 1001, 702
open "Tree Ring counter" for window as #w
#w "trapclose [quit]"
handleg =hwnd( #w.gb)
calldll #user32, "GetDC", handleg as ulong, hDC as ulong
loadbmp "scr", "treerings.bmp"
#w.gb "down ; drawbmp scr 1 1 ; flush ; size 2"
y =440
for x =85 to 935
calldll #gdi32, "GetPixel", hDC as ulong, x as long, y as long, pixcol as ulong
bl = int( pixcol /( 256*256)): gr = int( (pixcol -bl *256*256) / 256): re = int( pixcol -bl *256*256 -gr *256)
if pixcol <>2^24 -1 then pixels( x) =( re +gr +bl) /3 else pixels( x) =0
integral( x) =integral( x -1) +pixels( x)
#w.gb "color white ; set "; x; " "; y
next x
#w.gb "color cyan"
totalIntegral =integral( 935)
vold =0
#w.gb "up ; goto 0 430 ; down"
for x =86 to 934
'#w.gb "color darkblue ; set "; x; " "; 430 -int( pixels( x) /4)
v =int( integral( x +1) -x /1000 *totalIntegral)
if v >vold then #w.gb "color white ; set "; x; " "; 440 else #w.gb "color black ; set "; x; " "; 440
vold =v
next x
#w.gb "font arial 24"
#w.gb "up ; goto 40 412 ; down"
#w.gb "\"; str$( int( age2 /4))
#w.gb "getbmp scr 1 1 1000 702"
bmpsave "scr", "ringStats6.bmp"
wait
[quit]
close #w
callDll #user32, "ReleaseDC", handleg as ulong, hDC as ulong, result as ushort
end