|
@@ -50,7 +50,9 @@ public class BBoxHierarchyBuilder {
|
|
res.put("imageHeight",floors.getImageHeight());
|
|
res.put("imageHeight",floors.getImageHeight());
|
|
res.put("imageWidth",floors.getImageWidth());
|
|
res.put("imageWidth",floors.getImageWidth());
|
|
for (ShapeWrapper parent : allShapes) {
|
|
for (ShapeWrapper parent : allShapes) {
|
|
- if (!parent.tag.getCategory().startsWith("Tag_")) continue;
|
|
|
|
|
|
+ if (!parent.tag.getCategory().contains("Tag")) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
|
|
JSONArray children = new JSONArray();
|
|
JSONArray children = new JSONArray();
|
|
for (ShapeWrapper child : allShapes) {
|
|
for (ShapeWrapper child : allShapes) {
|
|
@@ -90,167 +92,202 @@ public class BBoxHierarchyBuilder {
|
|
public static void main(String[] args) {
|
|
public static void main(String[] args) {
|
|
// 示例:读取 Floors 对象(你可以从 JSON 文件反序列化)
|
|
// 示例:读取 Floors 对象(你可以从 JSON 文件反序列化)
|
|
String jsonInput = "{\n" +
|
|
String jsonInput = "{\n" +
|
|
- " \"floors\": [\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"imageWidth\": \"683\",\n" +
|
|
|
|
- " \"imageHeight\": \"637\",\n" +
|
|
|
|
- " \"shapes\": [\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 219.5,\n" +
|
|
|
|
- " 221.00000000000006,\n" +
|
|
|
|
- " 273.5,\n" +
|
|
|
|
- " 275.00000000000006\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"三人沙发\",\n" +
|
|
|
|
- " \"category\": \"ThreeSofa\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 453,\n" +
|
|
|
|
- " 408.50000000000006,\n" +
|
|
|
|
- " 529,\n" +
|
|
|
|
- " 484.5\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"双人床\",\n" +
|
|
|
|
- " \"category\": \"DoubleBed\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 136.50000000000003,\n" +
|
|
|
|
- " 169.00000000000006,\n" +
|
|
|
|
- " 185.50000000000003,\n" +
|
|
|
|
- " 218.00000000000006\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"三人沙发\",\n" +
|
|
|
|
- " \"category\": \"ThreeSofa\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 417,\n" +
|
|
|
|
- " 203.00000000000006,\n" +
|
|
|
|
- " 455,\n" +
|
|
|
|
- " 241.00000000000006\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"书桌\",\n" +
|
|
|
|
- " \"category\": \"Desk\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 218.5,\n" +
|
|
|
|
- " 468.00000000000006,\n" +
|
|
|
|
- " 287.50000000000006,\n" +
|
|
|
|
- " 537.0000000000001\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"双人床\",\n" +
|
|
|
|
- " \"category\": \"DoubleBed\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 232.5,\n" +
|
|
|
|
- " 160.00000000000006,\n" +
|
|
|
|
- " 272.5,\n" +
|
|
|
|
- " 200.00000000000006\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"书桌\",\n" +
|
|
|
|
- " \"category\": \"Desk\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 297,\n" +
|
|
|
|
- " 171.00000000000006,\n" +
|
|
|
|
- " 321,\n" +
|
|
|
|
- " 195.00000000000006\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"椅子\",\n" +
|
|
|
|
- " \"category\": \"Chair\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 418.5,\n" +
|
|
|
|
- " 181.00000000000006,\n" +
|
|
|
|
- " 441.5,\n" +
|
|
|
|
- " 204.00000000000006\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"椅子\",\n" +
|
|
|
|
- " \"category\": \"Chair\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 233.48909302398266,\n" +
|
|
|
|
- " 122.51909302398272,\n" +
|
|
|
|
- " 272.51090697601734,\n" +
|
|
|
|
- " 161.5409069760174\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"地毯\",\n" +
|
|
|
|
- " \"category\": \"Carpet\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 398,\n" +
|
|
|
|
- " 370,\n" +
|
|
|
|
- " 549,\n" +
|
|
|
|
- " 503\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"卧室\",\n" +
|
|
|
|
- " \"category\": \"Tag_bedroom\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 155,\n" +
|
|
|
|
- " 423,\n" +
|
|
|
|
- " 364,\n" +
|
|
|
|
- " 587\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"卧室\",\n" +
|
|
|
|
- " \"category\": \"Tag_bedroom\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 499,\n" +
|
|
|
|
- " 196,\n" +
|
|
|
|
- " 633,\n" +
|
|
|
|
- " 309\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"厨房\",\n" +
|
|
|
|
- " \"category\": \"Tag_kitchenroom\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 69,\n" +
|
|
|
|
- " 104,\n" +
|
|
|
|
- " 620,\n" +
|
|
|
|
- " 279\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"客厅\",\n" +
|
|
|
|
- " \"category\": \"Tag_livingroom\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 540.3126453583378,\n" +
|
|
|
|
- " 517.0000000000001,\n" +
|
|
|
|
- " 530.1507146416621,\n" +
|
|
|
|
- " 553.0000000000001\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"窗户\",\n" +
|
|
|
|
- " \"category\": \"BayWindow\"\n" +
|
|
|
|
- " },\n" +
|
|
|
|
- " {\n" +
|
|
|
|
- " \"bbox\": [\n" +
|
|
|
|
- " 81.08604535833786,\n" +
|
|
|
|
- " 110.00000000000006,\n" +
|
|
|
|
- " 70.92411464166213,\n" +
|
|
|
|
- " 298.00000000000006\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"name\": \"窗户\",\n" +
|
|
|
|
- " \"category\": \"BayWindow\"\n" +
|
|
|
|
- " }\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"floorsName\": \"1楼\"\n" +
|
|
|
|
- " }\n" +
|
|
|
|
- " ],\n" +
|
|
|
|
- " \"compass\": 0\n" +
|
|
|
|
- " }"; // 你的 JSON 字符串
|
|
|
|
|
|
+ " \"version\": \"v4.0\",\n" +
|
|
|
|
+ " \"floors\": [\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"imageWidth\": 1838,\n" +
|
|
|
|
+ " \"imageHeight\": 667,\n" +
|
|
|
|
+ " \"shapes\": [\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1515, 513.5, 1560, 558.5],\n" +
|
|
|
|
+ " \"category\": \"DoubleBed\",\n" +
|
|
|
|
+ " \"name\": \"DoubleBed\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1146, 530, 1173, 557],\n" +
|
|
|
|
+ " \"category\": \"ThreeSofa\",\n" +
|
|
|
|
+ " \"name\": \"ThreeSofa\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [928, 432.5, 1004, 508.5],\n" +
|
|
|
|
+ " \"category\": \"DoubleBed\",\n" +
|
|
|
|
+ " \"name\": \"DoubleBed\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [974, 236, 1002, 264],\n" +
|
|
|
|
+ " \"category\": \"Chair\",\n" +
|
|
|
|
+ " \"name\": \"Chair\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1417, 73, 1503, 266],\n" +
|
|
|
|
+ " \"category\": \"Tag\",\n" +
|
|
|
|
+ " \"name\": \"卫生间\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1251, 364, 1394, 589],\n" +
|
|
|
|
+ " \"category\": \"Tag\",\n" +
|
|
|
|
+ " \"name\": \"厨房\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1501, 71.2244458500226, 1453, 47.8271541499773],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1367, 71.2244458500226, 1295, 47.8271541499773],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1197, 71.2244458500226, 1152, 47.8271541499773],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1530, 596.635330850023, 1457, 573.238039149977],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1351, 596.635330850023, 1298, 573.238039149977],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " }\n" +
|
|
|
|
+ " ],\n" +
|
|
|
|
+ " \"name\": \"1楼\",\n" +
|
|
|
|
+ " \"subgroup\": 0\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"imageWidth\": 2557,\n" +
|
|
|
|
+ " \"imageHeight\": 648,\n" +
|
|
|
|
+ " \"shapes\": [\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [169, 247, 253, 331],\n" +
|
|
|
|
+ " \"category\": \"Desk\",\n" +
|
|
|
|
+ " \"name\": \"Desk\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1492, 459, 1526, 493],\n" +
|
|
|
|
+ " \"category\": \"Desk\",\n" +
|
|
|
|
+ " \"name\": \"Desk\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [428.5, 446, 477.5, 495],\n" +
|
|
|
|
+ " \"category\": \"ThreeSofa\",\n" +
|
|
|
|
+ " \"name\": \"ThreeSofa\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [789.5, 446, 836.5, 493],\n" +
|
|
|
|
+ " \"category\": \"Desk\",\n" +
|
|
|
|
+ " \"name\": \"Desk\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1717, 389, 1761, 433],\n" +
|
|
|
|
+ " \"category\": \"DoubleBed\",\n" +
|
|
|
|
+ " \"name\": \"DoubleBed\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1562, 452, 1594, 484],\n" +
|
|
|
|
+ " \"category\": \"Desk\",\n" +
|
|
|
|
+ " \"name\": \"Desk\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [891, 435.5, 922, 466.5],\n" +
|
|
|
|
+ " \"category\": \"Desk\",\n" +
|
|
|
|
+ " \"name\": \"Desk\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1449, 185, 1494, 230],\n" +
|
|
|
|
+ " \"category\": \"DoubleBed\",\n" +
|
|
|
|
+ " \"name\": \"DoubleBed\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [577, 285, 728, 497],\n" +
|
|
|
|
+ " \"category\": \"Tag\",\n" +
|
|
|
|
+ " \"name\": \"卧室1\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [54, 68, 385, 492],\n" +
|
|
|
|
+ " \"category\": \"Tag\",\n" +
|
|
|
|
+ " \"name\": \"客厅\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1293, 68, 1429, 260],\n" +
|
|
|
|
+ " \"category\": \"Tag\",\n" +
|
|
|
|
+ " \"name\": \"卧室2\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1863.134, 63.8968958500227, 1814.134, 40.4996041499774],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [700, 510.573880850023, 616, 487.176589149977],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [514, 512.116400850023, 451, 488.719109149977],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1555, 63.8968958500227, 1485, 40.4996041499774],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1047, 513.958695850023, 966, 490.561404149977],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [868, 509.423120850023, 805, 486.025829149977],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1935.44619585002, 278, 1912.04890414998, 337],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [50.4670000000001, 476.833979149977, 256.9774, 500.231270850023],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " }\n" +
|
|
|
|
+ " ],\n" +
|
|
|
|
+ " \"name\": \"2楼\",\n" +
|
|
|
|
+ " \"subgroup\": 1\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"imageWidth\": 1423,\n" +
|
|
|
|
+ " \"imageHeight\": 647,\n" +
|
|
|
|
+ " \"shapes\": [\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1147, 384, 1196, 433],\n" +
|
|
|
|
+ " \"category\": \"DoubleBed\",\n" +
|
|
|
|
+ " \"name\": \"DoubleBed\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1211, 270, 1355, 359],\n" +
|
|
|
|
+ " \"category\": \"Tag\",\n" +
|
|
|
|
+ " \"name\": \"厨房\"\n" +
|
|
|
|
+ " },\n" +
|
|
|
|
+ " {\n" +
|
|
|
|
+ " \"bbox\": [1271, 77.3732258500226, 1249, 53.9759341499773],\n" +
|
|
|
|
+ " \"category\": \"BayWindow\",\n" +
|
|
|
|
+ " \"name\": \"BayWindow\"\n" +
|
|
|
|
+ " }\n" +
|
|
|
|
+ " ],\n" +
|
|
|
|
+ " \"name\": \"3楼\",\n" +
|
|
|
|
+ " \"subgroup\": 2\n" +
|
|
|
|
+ " }\n" +
|
|
|
|
+ " ],\n" +
|
|
|
|
+ " \"unit\": \"m\",\n" +
|
|
|
|
+ " \"angle\": 0,\n" +
|
|
|
|
+ " \"compass\": 0\n" +
|
|
|
|
+ "}"; // 你的 JSON 字符串
|
|
JSONObject input = JSON.parseObject(jsonInput);
|
|
JSONObject input = JSON.parseObject(jsonInput);
|
|
Floors floor = input.getJSONArray("floors").getObject(0, Floors.class);
|
|
Floors floor = input.getJSONArray("floors").getObject(0, Floors.class);
|
|
|
|
|