From 9e0b6cc2b063749832f1bf49109989917e0a0226 Mon Sep 17 00:00:00 2001 From: scuri Date: Thu, 21 Jan 2010 18:24:22 +0000 Subject: Fixed: incomplete initialization of the array in imAnalyzeMeasureArea. --- html/en/history.html | 3 +++ html/examples/analyze.lua | 29 ++++++++++++----------------- src/lua5/imlua_aux.c | 4 ++-- src/process/im_analyze.cpp | 5 +++-- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/html/en/history.html b/html/en/history.html index 8c7f892..4f100f5 100644 --- a/html/en/history.html +++ b/html/en/history.html @@ -37,6 +37,9 @@
  • Fixed: alpha support in image:CopyPlane() and in channel indexing in Lua.
  • +
  • Fixed: incomplete initialization of the array in + imAnalyzeMeasureArea.
  • Version 3.5 (02/Oct/2009)

    diff --git a/html/examples/analyze.lua b/html/examples/analyze.lua index 7f06496..bc4a78e 100644 --- a/html/examples/analyze.lua +++ b/html/examples/analyze.lua @@ -1,28 +1,23 @@ require"imlua" require"imlua_process" -local filename = "lena.jpg" +local filename = "rice.png" -- image must be im.GRAY and im.BYTE for this script local image = im.FileImageLoad(filename) -local gray = im.ImageCreate(image:Width(), image:Height(), im.GRAY, image:DataType()) -local binary = im.ImageCreate(image:Width(), image:Height(), im.BINARY, image:DataType()) -local region = im.ImageCreate(image:Width(), image:Height(), im.GRAY, im.USHORT) - --- make it grayscale -im.ConvertColorSpace(image, gray) -gray:Save("lena_gray.jpg", "JPEG") +local binary = im.ImageCreateBased(image, nil, nil, im.BINARY, nil) +local region = im.ImageCreateBased(image, nil, nil, nil, im.USHORT) -- make it binary -im.ProcessSliceThreshold(gray, binary, 0, 128) -binary:Save("lena_binary.jpg", "JPEG") +im.ProcessPercentThreshold(image, binary, 70) --lots of background -local count = im.AnalyzeFindRegions(binary, region, 4, 1) +-- search for closed regions, don't count objects that touches the image borders +local count = im.AnalyzeFindRegions(binary, region, 4, 0) print("regions: ", count) -local region2 = im.ImageCreate(image:Width(), image:Height(), im.GRAY, im.BYTE) -im.ConvertDataType(region, region2, 0, 0, 0, 0) +local area = im.AnalyzeMeasureArea(region, count) +local major_slope, major_length, minor_slope, minor_length = im.AnalyzeMeasurePrincipalAxis(region, area, nil, nil, count) -local region3 = im.ImageCreate(image:Width(), image:Height(), im.MAP, im.BYTE) -im.ConvertColorSpace(region2, region3) -region3:SetPalette(im.PaletteHighContrast(), 256) -region3:Save("lena_region.gif", "GIF") +print("object", "area", "major length", "minor length") +for r=1, count do + print(r, area[r-1], string.format("%5.5g", major_length[r-1]), string.format("%5.5g", minor_length[r-1])) +end diff --git a/src/lua5/imlua_aux.c b/src/lua5/imlua_aux.c index e472dca..b26df93 100644 --- a/src/lua5/imlua_aux.c +++ b/src/lua5/imlua_aux.c @@ -2,7 +2,7 @@ * \brief IM Lua 5 Binding * * See Copyright Notice in im_lib.h - * $Id: imlua_aux.c,v 1.2 2009/08/04 21:35:26 scuri Exp $ + * $Id: imlua_aux.c,v 1.3 2010/01/21 18:24:22 scuri Exp $ */ #include @@ -46,7 +46,7 @@ int imlua_newarrayint (lua_State *L, int *value, int count, int start) lua_newtable(L); for (i = 0; i < count; i++) { - lua_pushnumber(L, value[i]); + lua_pushinteger(L, value[i]); lua_rawseti(L, -2, i+start); } return 1; diff --git a/src/process/im_analyze.cpp b/src/process/im_analyze.cpp index 02748f0..551f043 100644 --- a/src/process/im_analyze.cpp +++ b/src/process/im_analyze.cpp @@ -2,7 +2,7 @@ * \brief Image Analysis * * See Copyright Notice in im_lib.h - * $Id: im_analyze.cpp,v 1.3 2009/11/20 18:59:08 scuri Exp $ + * $Id: im_analyze.cpp,v 1.4 2010/01/21 18:24:23 scuri Exp $ */ @@ -402,7 +402,8 @@ int imAnalyzeFindRegions(const imImage* image, imImage* NewImage, int connect, i void imAnalyzeMeasureArea(const imImage* image, int* data_area, int region_count) { imushort* img_data = (imushort*)image->data[0]; - memset(data_area, 0, region_count*sizeof(imushort)); + + memset(data_area, 0, region_count*sizeof(int)); for (int i = 0; i < image->count; i++) { -- cgit v1.2.3