diff --git a/.vscode/PythonImportHelper-v2-Completion.json b/.vscode/PythonImportHelper-v2-Completion.json
index 95e43a2..4e0c243 100644
--- a/.vscode/PythonImportHelper-v2-Completion.json
+++ b/.vscode/PythonImportHelper-v2-Completion.json
@@ -1,4 +1,39 @@
[
+ {
+ "label": "annotations",
+ "importPath": "__future__",
+ "description": "__future__",
+ "isExtraImport": true,
+ "detail": "__future__",
+ "documentation": {}
+ },
+ {
+ "label": "os",
+ "kind": 6,
+ "isExtraImport": true,
+ "importPath": "os",
+ "description": "os",
+ "detail": "os",
+ "documentation": {}
+ },
+ {
+ "label": "site",
+ "kind": 6,
+ "isExtraImport": true,
+ "importPath": "site",
+ "description": "site",
+ "detail": "site",
+ "documentation": {}
+ },
+ {
+ "label": "sys",
+ "kind": 6,
+ "isExtraImport": true,
+ "importPath": "sys",
+ "description": "sys",
+ "detail": "sys",
+ "documentation": {}
+ },
{
"label": "json",
"kind": 6,
@@ -97,15 +132,6 @@
"detail": "gyp.common",
"documentation": {}
},
- {
- "label": "os",
- "kind": 6,
- "isExtraImport": true,
- "importPath": "os",
- "description": "os",
- "detail": "os",
- "documentation": {}
- },
{
"label": "posixpath",
"kind": 6,
@@ -249,15 +275,6 @@
"detail": "code",
"documentation": {}
},
- {
- "label": "sys",
- "kind": 6,
- "isExtraImport": true,
- "importPath": "sys",
- "description": "sys",
- "detail": "sys",
- "documentation": {}
- },
{
"label": "hashlib",
"kind": 6,
@@ -1660,6 +1677,30 @@
"detail": "django.test",
"documentation": {}
},
+ {
+ "label": "Image",
+ "importPath": "PIL",
+ "description": "PIL",
+ "isExtraImport": true,
+ "detail": "PIL",
+ "documentation": {}
+ },
+ {
+ "label": "Bitmap",
+ "importPath": "potrace",
+ "description": "potrace",
+ "isExtraImport": true,
+ "detail": "potrace",
+ "documentation": {}
+ },
+ {
+ "label": "POTRACE_TURNPOLICY_MINORITY",
+ "importPath": "potrace",
+ "description": "potrace",
+ "isExtraImport": true,
+ "detail": "potrace",
+ "documentation": {}
+ },
{
"label": "render",
"importPath": "django.shortcuts",
@@ -1756,6 +1797,105 @@
"detail": "django.core.wsgi",
"documentation": {}
},
+ {
+ "label": "cv2",
+ "kind": 6,
+ "isExtraImport": true,
+ "importPath": "cv2",
+ "description": "cv2",
+ "detail": "cv2",
+ "documentation": {}
+ },
+ {
+ "label": "numpy",
+ "kind": 6,
+ "isExtraImport": true,
+ "importPath": "numpy",
+ "description": "numpy",
+ "detail": "numpy",
+ "documentation": {}
+ },
+ {
+ "label": "bin_dir",
+ "kind": 5,
+ "importPath": ".venv.bin.activate_this",
+ "description": ".venv.bin.activate_this",
+ "peekOfCode": "bin_dir = os.path.dirname(abs_file)\nbase = bin_dir[: -len(\"bin\") - 1] # strip away the bin part from the __file__, plus the path separator\n# prepend bin to PATH (this file is inside the bin directory)\nos.environ[\"PATH\"] = os.pathsep.join([bin_dir, *os.environ.get(\"PATH\", \"\").split(os.pathsep)])\nos.environ[\"VIRTUAL_ENV\"] = base # virtual env is right above bin directory\nos.environ[\"VIRTUAL_ENV_PROMPT\"] = \"interactive-table-py3.10\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"../lib/python3.10/site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))",
+ "detail": ".venv.bin.activate_this",
+ "documentation": {}
+ },
+ {
+ "label": "base",
+ "kind": 5,
+ "importPath": ".venv.bin.activate_this",
+ "description": ".venv.bin.activate_this",
+ "peekOfCode": "base = bin_dir[: -len(\"bin\") - 1] # strip away the bin part from the __file__, plus the path separator\n# prepend bin to PATH (this file is inside the bin directory)\nos.environ[\"PATH\"] = os.pathsep.join([bin_dir, *os.environ.get(\"PATH\", \"\").split(os.pathsep)])\nos.environ[\"VIRTUAL_ENV\"] = base # virtual env is right above bin directory\nos.environ[\"VIRTUAL_ENV_PROMPT\"] = \"interactive-table-py3.10\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"../lib/python3.10/site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path.decode(\"utf-8\") if \"\" else path)",
+ "detail": ".venv.bin.activate_this",
+ "documentation": {}
+ },
+ {
+ "label": "os.environ[\"PATH\"]",
+ "kind": 5,
+ "importPath": ".venv.bin.activate_this",
+ "description": ".venv.bin.activate_this",
+ "peekOfCode": "os.environ[\"PATH\"] = os.pathsep.join([bin_dir, *os.environ.get(\"PATH\", \"\").split(os.pathsep)])\nos.environ[\"VIRTUAL_ENV\"] = base # virtual env is right above bin directory\nos.environ[\"VIRTUAL_ENV_PROMPT\"] = \"interactive-table-py3.10\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"../lib/python3.10/site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path.decode(\"utf-8\") if \"\" else path)\nsys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix",
+ "detail": ".venv.bin.activate_this",
+ "documentation": {}
+ },
+ {
+ "label": "os.environ[\"VIRTUAL_ENV\"]",
+ "kind": 5,
+ "importPath": ".venv.bin.activate_this",
+ "description": ".venv.bin.activate_this",
+ "peekOfCode": "os.environ[\"VIRTUAL_ENV\"] = base # virtual env is right above bin directory\nos.environ[\"VIRTUAL_ENV_PROMPT\"] = \"interactive-table-py3.10\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"../lib/python3.10/site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path.decode(\"utf-8\") if \"\" else path)\nsys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix\nsys.prefix = base",
+ "detail": ".venv.bin.activate_this",
+ "documentation": {}
+ },
+ {
+ "label": "os.environ[\"VIRTUAL_ENV_PROMPT\"]",
+ "kind": 5,
+ "importPath": ".venv.bin.activate_this",
+ "description": ".venv.bin.activate_this",
+ "peekOfCode": "os.environ[\"VIRTUAL_ENV_PROMPT\"] = \"interactive-table-py3.10\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"../lib/python3.10/site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path.decode(\"utf-8\") if \"\" else path)\nsys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix\nsys.prefix = base",
+ "detail": ".venv.bin.activate_this",
+ "documentation": {}
+ },
+ {
+ "label": "prev_length",
+ "kind": 5,
+ "importPath": ".venv.bin.activate_this",
+ "description": ".venv.bin.activate_this",
+ "peekOfCode": "prev_length = len(sys.path)\nfor lib in \"../lib/python3.10/site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path.decode(\"utf-8\") if \"\" else path)\nsys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix\nsys.prefix = base",
+ "detail": ".venv.bin.activate_this",
+ "documentation": {}
+ },
+ {
+ "label": "sys.path[:]",
+ "kind": 5,
+ "importPath": ".venv.bin.activate_this",
+ "description": ".venv.bin.activate_this",
+ "peekOfCode": "sys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix\nsys.prefix = base",
+ "detail": ".venv.bin.activate_this",
+ "documentation": {}
+ },
+ {
+ "label": "sys.real_prefix",
+ "kind": 5,
+ "importPath": ".venv.bin.activate_this",
+ "description": ".venv.bin.activate_this",
+ "peekOfCode": "sys.real_prefix = sys.prefix\nsys.prefix = base",
+ "detail": ".venv.bin.activate_this",
+ "documentation": {}
+ },
+ {
+ "label": "sys.prefix",
+ "kind": 5,
+ "importPath": ".venv.bin.activate_this",
+ "description": ".venv.bin.activate_this",
+ "peekOfCode": "sys.prefix = base",
+ "detail": ".venv.bin.activate_this",
+ "documentation": {}
+ },
{
"label": "_Known",
"kind": 6,
@@ -8326,6 +8466,15 @@
"detail": "back.api.serializers",
"documentation": {}
},
+ {
+ "label": "file_to_svg",
+ "kind": 2,
+ "importPath": "back.api.tracer",
+ "description": "back.api.tracer",
+ "peekOfCode": "def file_to_svg(filename: str):\n try:\n image = Image.open(filename)\n except IOError:\n print(\"Image (%s) could not be loaded.\" % filename)\n return\n bm = Bitmap(image, blacklevel=0.5)\n # bm.invert()\n plist = bm.trace(\n turdsize=2,",
+ "detail": "back.api.tracer",
+ "documentation": {}
+ },
{
"label": "products",
"kind": 2,
@@ -8559,5 +8708,68 @@
"peekOfCode": "def main():\n \"\"\"Run administrative tasks.\"\"\"\n os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'back.settings')\n try:\n from django.core.management import execute_from_command_line\n except ImportError as exc:\n raise ImportError(\n \"Couldn't import Django. Are you sure it's installed and \"\n \"available on your PYTHONPATH environment variable? Did you \"\n \"forget to activate a virtual environment?\"",
"detail": "back.manage",
"documentation": {}
+ },
+ {
+ "label": "img",
+ "kind": 5,
+ "importPath": "test",
+ "description": "test",
+ "peekOfCode": "img = cv2.imread(\n \"/home/arizona/projects/svs_tech/demo-int-table/admin_front/assets/img/plan.png\"\n)\n(h, w) = img.shape[:2]\nt = 1600\nimg = cv2.resize(img, (t, int((h/w) * t)))\ngray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\ngray = 255 - gray\ngray = cv2.blur(gray, (8, 1))\ngray = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)[1]",
+ "detail": "test",
+ "documentation": {}
+ },
+ {
+ "label": "t",
+ "kind": 5,
+ "importPath": "test",
+ "description": "test",
+ "peekOfCode": "t = 1600\nimg = cv2.resize(img, (t, int((h/w) * t)))\ngray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\ngray = 255 - gray\ngray = cv2.blur(gray, (8, 1))\ngray = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)[1]\ncontours, hierarchy = cv2.findContours(gray, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)\nfor cnt in contours:\n area = cv2.contourArea(cnt)\n if area > 150000 and area < 500000:",
+ "detail": "test",
+ "documentation": {}
+ },
+ {
+ "label": "img",
+ "kind": 5,
+ "importPath": "test",
+ "description": "test",
+ "peekOfCode": "img = cv2.resize(img, (t, int((h/w) * t)))\ngray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\ngray = 255 - gray\ngray = cv2.blur(gray, (8, 1))\ngray = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)[1]\ncontours, hierarchy = cv2.findContours(gray, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)\nfor cnt in contours:\n area = cv2.contourArea(cnt)\n if area > 150000 and area < 500000:\n cv2.drawContours(img, [cnt], 0, (255, 0, 0), 2)",
+ "detail": "test",
+ "documentation": {}
+ },
+ {
+ "label": "gray",
+ "kind": 5,
+ "importPath": "test",
+ "description": "test",
+ "peekOfCode": "gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\ngray = 255 - gray\ngray = cv2.blur(gray, (8, 1))\ngray = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)[1]\ncontours, hierarchy = cv2.findContours(gray, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)\nfor cnt in contours:\n area = cv2.contourArea(cnt)\n if area > 150000 and area < 500000:\n cv2.drawContours(img, [cnt], 0, (255, 0, 0), 2)\ncv2.imshow(\"img\", img)",
+ "detail": "test",
+ "documentation": {}
+ },
+ {
+ "label": "gray",
+ "kind": 5,
+ "importPath": "test",
+ "description": "test",
+ "peekOfCode": "gray = 255 - gray\ngray = cv2.blur(gray, (8, 1))\ngray = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)[1]\ncontours, hierarchy = cv2.findContours(gray, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)\nfor cnt in contours:\n area = cv2.contourArea(cnt)\n if area > 150000 and area < 500000:\n cv2.drawContours(img, [cnt], 0, (255, 0, 0), 2)\ncv2.imshow(\"img\", img)\ncv2.waitKey()",
+ "detail": "test",
+ "documentation": {}
+ },
+ {
+ "label": "gray",
+ "kind": 5,
+ "importPath": "test",
+ "description": "test",
+ "peekOfCode": "gray = cv2.blur(gray, (8, 1))\ngray = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)[1]\ncontours, hierarchy = cv2.findContours(gray, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)\nfor cnt in contours:\n area = cv2.contourArea(cnt)\n if area > 150000 and area < 500000:\n cv2.drawContours(img, [cnt], 0, (255, 0, 0), 2)\ncv2.imshow(\"img\", img)\ncv2.waitKey()",
+ "detail": "test",
+ "documentation": {}
+ },
+ {
+ "label": "gray",
+ "kind": 5,
+ "importPath": "test",
+ "description": "test",
+ "peekOfCode": "gray = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)[1]\ncontours, hierarchy = cv2.findContours(gray, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)\nfor cnt in contours:\n area = cv2.contourArea(cnt)\n if area > 150000 and area < 500000:\n cv2.drawContours(img, [cnt], 0, (255, 0, 0), 2)\ncv2.imshow(\"img\", img)\ncv2.waitKey()",
+ "detail": "test",
+ "documentation": {}
}
]
\ No newline at end of file
diff --git a/admin_front/assets/img/plan.svg b/admin_front/assets/img/plan.svg
new file mode 100644
index 0000000..6be125f
--- /dev/null
+++ b/admin_front/assets/img/plan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/admin_front/pages/plan/mark.vue b/admin_front/pages/plan/mark.vue
index 87b6f87..b94eb7a 100644
--- a/admin_front/pages/plan/mark.vue
+++ b/admin_front/pages/plan/mark.vue
@@ -1,5 +1,5 @@