1 | get("#348") -- rgb functions |
2 | get("#479") -- getcrop2 |
3 | get("#337") -- map(list, f) |
4 | get("#388") -- rectangle functions |
5 | |
6 | brightnessThreshold = 0.9 |
7 | |
8 | function horizontalsplit(img) |
9 | local function isEmpty(x) |
10 | for y=0, img.height-1 do |
11 | if bright(rgb(img.getInt(x, y))) <= brightnessThreshold then |
12 | return false |
13 | end |
14 | end |
15 | return true |
16 | end |
17 | |
18 | local lastEmpty, start = true, nil |
19 | local segments = {} |
20 | |
21 | for x=0, img.width-1 do |
22 | empty = isEmpty(x) |
23 | if empty and not lastEmpty then |
24 | table.insert(segments, {start, x}) |
25 | elseif not empty and lastEmpty then |
26 | start = x |
27 | end |
28 | lastEmpty = empty |
29 | end |
30 | |
31 | if not lastEmpty then |
32 | table.insert(segments, {start, img.width}) |
33 | end |
34 | |
35 | if #segments <= 1 then -- don't bother with only 1 segment |
36 | return {} |
37 | end |
38 | |
39 | local result = {} |
40 | for _, seg in ipairs(segments) do |
41 | local sx1, sx2 = unpack(seg) |
42 | |
43 | local cropped = { |
44 | width = sx2-sx1, |
45 | height = img.height, |
46 | getInt = function(x, y) |
47 | return img.getInt(x+sx1, y) |
48 | end |
49 | } |
50 | local x1, y1, x2, y2 = getcrop2(cropped) |
51 | table.insert(result, newRectangle(x1+sx1, y1, x2-x1, y2-y1)) |
52 | end |
53 | return result |
54 | 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: | 686 / 153 |
Referenced in: | [show references] |