get("#348") -- rgb functions get("#479") -- getcrop2 get("#337") -- map(list, f) get("#388") -- rectangle functions brightnessThreshold = 0.9 function horizontalsplit(img) local function isEmpty(x) for y=0, img.height-1 do if bright(rgb(img.getInt(x, y))) <= brightnessThreshold then return false end end return true end local lastEmpty, start = true, nil local segments = {} for x=0, img.width-1 do empty = isEmpty(x) if empty and not lastEmpty then table.insert(segments, {start, x}) elseif not empty and lastEmpty then start = x end lastEmpty = empty end if not lastEmpty then table.insert(segments, {start, img.width}) end if #segments <= 1 then -- don't bother with only 1 segment return {} end local result = {} for _, seg in ipairs(segments) do local sx1, sx2 = unpack(seg) local cropped = { width = sx2-sx1, height = img.height, getInt = function(x, y) return img.getInt(x+sx1, y) end } local x1, y1, x2, y2 = getcrop2(cropped) table.insert(result, newRectangle(x1+sx1, y1, x2-x1, y2-y1)) end return result end
Began life as a copy of #478
test run test run with input download show line numbers
Travelled to 12 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #480 |
Snippet name: | Horizontal split with crop 2 (include) |
Eternal ID of this version: | #480/1 |
Text MD5: | 66e3cd56a59ddf696cdc124b7de77631 |
Author: | stefan |
Category: | |
Type: | Lua code |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2015-02-25 19:35:22 |
Source code size: | 1245 bytes / 54 lines |
Pitched / IR pitched: | No / Yes |
Views / Downloads: | 705 / 158 |
Referenced in: | [show references] |