From db679e6b5e787db83735de1041178136a4271d68 Mon Sep 17 00:00:00 2001 From: kiran-2 <70772624+kiran-2@users.noreply.github.com> Date: Sat, 17 Oct 2020 14:29:19 +0530 Subject: [PATCH 1/2] Add files via upload --- kiran_ML_Contour Features.ipynb | 83 +++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 kiran_ML_Contour Features.ipynb diff --git a/kiran_ML_Contour Features.ipynb b/kiran_ML_Contour Features.ipynb new file mode 100644 index 0000000..7bdd03b --- /dev/null +++ b/kiran_ML_Contour Features.ipynb @@ -0,0 +1,83 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1 What Are Countour Features?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# \n", + "Contours show distinct characteristic features of the terrain as follows: i) All points on a contour line are of the same elevation. ii) No two contour lines can meet or cross each other except in the rare case of an overhanging vertical cliff or wall. iii) Closely spaced contour lines indicate steep slope." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# \n", + " i) All points on a contour line are of the same elevation.\n", + "\n", + "ii) No two contour lines can meet or cross each other except in the rare case of an overhanging vertical cliff or wall\n", + "iii) Closely spaced contour lines indicate steep slope\n", + "\n", + "iv) Widely spaced contour lines indicate gentle slope\n", + "\n", + "v) Equally spaced contour lines indicate uniform slope\n", + "\n", + "vi) Closed contour lines with higher elevation towards the centre indicate hills\n", + "\n", + "vii) Closed contour lines with reducing levels towards the centre indicate pond or other depression.\n", + "\n", + "viii) Contour lines of ridge show higher elevation within the loop of the contours. Contour lines cross ridge at right angles." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2 Why Countour Features?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# \n", + "Contours make it possible to represent the height of mountains and steepness of slopes on a two-dimensional map surface. Topographic maps also use a variety of symbols to describe both natural and human made features such as roads, buildings, quarries, lakes, streams, and vegetation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From ef0dae1104aa775ffdd6df2d7d38ebbc2b7b6058 Mon Sep 17 00:00:00 2001 From: kiran-2 <70772624+kiran-2@users.noreply.github.com> Date: Sat, 17 Oct 2020 14:37:09 +0530 Subject: [PATCH 2/2] Add files via upload --- kiran_ML_Contour Features s.ipynb | 5511 +++++++++++++++++++++++++++++ 1 file changed, 5511 insertions(+) create mode 100644 kiran_ML_Contour Features s.ipynb diff --git a/kiran_ML_Contour Features s.ipynb b/kiran_ML_Contour Features s.ipynb new file mode 100644 index 0000000..2f17194 --- /dev/null +++ b/kiran_ML_Contour Features s.ipynb @@ -0,0 +1,5511 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Name:-Kiran Avhad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Email Id:-Kiranavhad886@gmail.com" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Linkedin Profile:-https://www.linkedin.com/in/kiran-avhad-296499155" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Contour Features" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from PIL import Image\n", + "from IPython.display import Image\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path=\"D:/FILM/download.jpg\"\n", + "Image(filename=r\"D:/FILM/download.jpg\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1 Moments :-\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Image moments help you to calculate some features like center of mass of the object, area of the object \n", + "\n", + "The function cv2.moments() gives a dictionary of all moment values calculated. See below:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import cv2\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "M= {'m00': 0.0, 'm10': 0.0, 'm01': 0.0, 'm20': 0.0, 'm11': 0.0, 'm02': 0.0, 'm30': 0.0, 'm21': 0.0, 'm12': 0.0, 'm03': 0.0, 'mu20': 0.0, 'mu11': 0.0, 'mu02': 0.0, 'mu30': 0.0, 'mu21': 0.0, 'mu12': 0.0, 'mu03': 0.0, 'nu20': 0.0, 'nu11': 0.0, 'nu02': 0.0, 'nu30': 0.0, 'nu21': 0.0, 'nu12': 0.0, 'nu03': 0.0}\n" + ] + } + ], + "source": [ + "import cv2\n", + "import numpy as np\n", + "\n", + "img = cv2.imread(\"D:/FILM/download.jpg\",0)\n", + "ret,thresh = cv2.threshold(img,127,255,0)\n", + "contours,hierarchy = cv2.findContours(thresh, 1, 2)\n", + "cnt = contours[0]\n", + "M = cv2.moments(cnt)\n", + "print(\"M=\",M)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([array([[[127, 223]],\n", + " \n", + " [[127, 224]]], dtype=int32),\n", + " array([[[183, 222]],\n", + " \n", + " [[184, 221]],\n", + " \n", + " [[185, 222]],\n", + " \n", + " [[184, 223]]], dtype=int32),\n", + " array([[[168, 222]],\n", + " \n", + " [[169, 221]],\n", + " \n", + " [[170, 222]],\n", + " \n", + " [[170, 223]],\n", + " \n", + " [[169, 224]],\n", + " \n", + " [[168, 223]]], dtype=int32),\n", + " array([[[ 58, 222]],\n", + " \n", + " [[ 59, 221]],\n", + " \n", + " [[ 60, 222]],\n", + " \n", + " [[ 59, 223]]], dtype=int32),\n", + " array([[[184, 221]],\n", + " \n", + " [[185, 220]],\n", + " \n", + " [[187, 220]],\n", + " \n", + " [[188, 221]],\n", + " \n", + " [[187, 222]],\n", + " \n", + " [[185, 222]]], dtype=int32),\n", + " array([[[182, 221]],\n", + " \n", + " [[183, 220]],\n", + " \n", + " [[184, 221]],\n", + " \n", + " [[183, 222]]], dtype=int32),\n", + " array([[[149, 221]],\n", + " \n", + " [[150, 220]],\n", + " \n", + " [[151, 221]],\n", + " \n", + " [[151, 222]],\n", + " \n", + " [[150, 223]],\n", + " \n", + " [[149, 222]]], dtype=int32),\n", + " array([[[ 80, 220]],\n", + " \n", + " [[ 79, 221]],\n", + " \n", + " [[ 79, 223]],\n", + " \n", + " [[ 78, 224]],\n", + " \n", + " [[ 79, 224]],\n", + " \n", + " [[ 79, 221]]], dtype=int32),\n", + " array([[[131, 218]],\n", + " \n", + " [[131, 224]]], dtype=int32),\n", + " array([[[ 61, 217]],\n", + " \n", + " [[ 62, 218]],\n", + " \n", + " [[ 62, 219]],\n", + " \n", + " [[ 60, 221]],\n", + " \n", + " [[ 59, 220]],\n", + " \n", + " [[ 59, 219]]], dtype=int32),\n", + " array([[[205, 217]],\n", + " \n", + " [[204, 218]],\n", + " \n", + " [[204, 219]],\n", + " \n", + " [[203, 220]],\n", + " \n", + " [[203, 221]],\n", + " \n", + " [[204, 221]],\n", + " \n", + " [[204, 220]],\n", + " \n", + " [[205, 219]]], dtype=int32),\n", + " array([[[183, 217]],\n", + " \n", + " [[184, 216]],\n", + " \n", + " [[185, 217]],\n", + " \n", + " [[184, 218]]], dtype=int32),\n", + " array([[[ 57, 217]],\n", + " \n", + " [[ 58, 216]],\n", + " \n", + " [[ 59, 217]],\n", + " \n", + " [[ 58, 218]]], dtype=int32),\n", + " array([[[137, 216]],\n", + " \n", + " [[138, 215]],\n", + " \n", + " [[139, 216]],\n", + " \n", + " [[138, 217]]], dtype=int32),\n", + " array([[[ 58, 216]],\n", + " \n", + " [[ 59, 215]],\n", + " \n", + " [[ 60, 215]],\n", + " \n", + " [[ 61, 216]],\n", + " \n", + " [[ 60, 217]],\n", + " \n", + " [[ 59, 217]]], dtype=int32),\n", + " array([[[181, 215]],\n", + " \n", + " [[182, 214]],\n", + " \n", + " [[183, 215]],\n", + " \n", + " [[183, 216]],\n", + " \n", + " [[182, 217]],\n", + " \n", + " [[182, 220]],\n", + " \n", + " [[181, 221]],\n", + " \n", + " [[180, 220]],\n", + " \n", + " [[179, 220]],\n", + " \n", + " [[177, 218]],\n", + " \n", + " [[177, 217]],\n", + " \n", + " [[178, 216]],\n", + " \n", + " [[179, 216]],\n", + " \n", + " [[180, 215]]], dtype=int32),\n", + " array([[[207, 214]],\n", + " \n", + " [[207, 216]],\n", + " \n", + " [[208, 217]],\n", + " \n", + " [[208, 218]],\n", + " \n", + " [[209, 218]],\n", + " \n", + " [[209, 216]],\n", + " \n", + " [[208, 215]],\n", + " \n", + " [[208, 214]]], dtype=int32),\n", + " array([[[130, 214]]], dtype=int32),\n", + " array([[[ 83, 214]]], dtype=int32),\n", + " array([[[179, 213]],\n", + " \n", + " [[180, 212]],\n", + " \n", + " [[181, 213]],\n", + " \n", + " [[181, 214]],\n", + " \n", + " [[180, 215]],\n", + " \n", + " [[179, 215]],\n", + " \n", + " [[178, 216]],\n", + " \n", + " [[177, 215]],\n", + " \n", + " [[177, 214]],\n", + " \n", + " [[178, 213]]], dtype=int32),\n", + " array([[[ 74, 212]],\n", + " \n", + " [[ 75, 211]],\n", + " \n", + " [[ 76, 212]],\n", + " \n", + " [[ 75, 213]]], dtype=int32),\n", + " array([[[182, 211]],\n", + " \n", + " [[183, 210]],\n", + " \n", + " [[185, 212]],\n", + " \n", + " [[185, 215]],\n", + " \n", + " [[184, 216]],\n", + " \n", + " [[183, 215]],\n", + " \n", + " [[183, 214]],\n", + " \n", + " [[182, 213]]], dtype=int32),\n", + " array([[[ 63, 211]],\n", + " \n", + " [[ 64, 210]],\n", + " \n", + " [[ 65, 211]],\n", + " \n", + " [[ 65, 213]],\n", + " \n", + " [[ 63, 215]],\n", + " \n", + " [[ 63, 216]],\n", + " \n", + " [[ 62, 217]],\n", + " \n", + " [[ 60, 215]],\n", + " \n", + " [[ 63, 212]]], dtype=int32),\n", + " array([[[ 34, 211]],\n", + " \n", + " [[ 35, 210]],\n", + " \n", + " [[ 36, 211]],\n", + " \n", + " [[ 36, 215]],\n", + " \n", + " [[ 35, 216]],\n", + " \n", + " [[ 34, 215]]], dtype=int32),\n", + " array([[[183, 210]],\n", + " \n", + " [[184, 209]],\n", + " \n", + " [[185, 210]],\n", + " \n", + " [[184, 211]]], dtype=int32),\n", + " array([[[180, 210]],\n", + " \n", + " [[181, 209]],\n", + " \n", + " [[182, 209]],\n", + " \n", + " [[183, 210]],\n", + " \n", + " [[182, 211]],\n", + " \n", + " [[181, 211]]], dtype=int32),\n", + " array([[[ 76, 210]],\n", + " \n", + " [[ 77, 209]],\n", + " \n", + " [[ 79, 209]],\n", + " \n", + " [[ 80, 210]],\n", + " \n", + " [[ 80, 211]],\n", + " \n", + " [[ 79, 212]],\n", + " \n", + " [[ 77, 212]],\n", + " \n", + " [[ 76, 211]]], dtype=int32),\n", + " array([[[ 70, 210]],\n", + " \n", + " [[ 71, 209]],\n", + " \n", + " [[ 72, 209]],\n", + " \n", + " [[ 74, 211]],\n", + " \n", + " [[ 73, 212]],\n", + " \n", + " [[ 71, 212]],\n", + " \n", + " [[ 70, 211]]], dtype=int32),\n", + " array([[[ 64, 210]],\n", + " \n", + " [[ 65, 209]],\n", + " \n", + " [[ 66, 210]],\n", + " \n", + " [[ 65, 211]]], dtype=int32),\n", + " array([[[116, 209]],\n", + " \n", + " [[116, 210]],\n", + " \n", + " [[115, 211]],\n", + " \n", + " [[112, 211]],\n", + " \n", + " [[111, 210]],\n", + " \n", + " [[111, 212]],\n", + " \n", + " [[112, 213]],\n", + " \n", + " [[113, 213]],\n", + " \n", + " [[115, 215]],\n", + " \n", + " [[115, 216]],\n", + " \n", + " [[116, 217]],\n", + " \n", + " [[116, 218]],\n", + " \n", + " [[117, 219]],\n", + " \n", + " [[117, 220]],\n", + " \n", + " [[117, 219]],\n", + " \n", + " [[118, 218]],\n", + " \n", + " [[119, 218]],\n", + " \n", + " [[120, 217]],\n", + " \n", + " [[120, 216]],\n", + " \n", + " [[121, 215]],\n", + " \n", + " [[121, 211]],\n", + " \n", + " [[120, 211]],\n", + " \n", + " [[118, 209]]], dtype=int32),\n", + " array([[[ 48, 209]],\n", + " \n", + " [[ 49, 208]],\n", + " \n", + " [[ 50, 209]],\n", + " \n", + " [[ 49, 210]]], dtype=int32),\n", + " array([[[187, 208]],\n", + " \n", + " [[188, 207]],\n", + " \n", + " [[190, 209]],\n", + " \n", + " [[190, 211]],\n", + " \n", + " [[191, 212]],\n", + " \n", + " [[190, 213]],\n", + " \n", + " [[190, 217]],\n", + " \n", + " [[189, 218]],\n", + " \n", + " [[189, 220]],\n", + " \n", + " [[188, 221]],\n", + " \n", + " [[187, 220]],\n", + " \n", + " [[187, 219]],\n", + " \n", + " [[185, 219]],\n", + " \n", + " [[184, 218]],\n", + " \n", + " [[185, 217]],\n", + " \n", + " [[187, 217]],\n", + " \n", + " [[187, 216]],\n", + " \n", + " [[186, 215]],\n", + " \n", + " [[187, 214]],\n", + " \n", + " [[187, 211]],\n", + " \n", + " [[188, 210]],\n", + " \n", + " [[187, 209]]], dtype=int32),\n", + " array([[[151, 208]],\n", + " \n", + " [[152, 207]],\n", + " \n", + " [[153, 208]],\n", + " \n", + " [[155, 208]],\n", + " \n", + " [[156, 209]],\n", + " \n", + " [[156, 211]],\n", + " \n", + " [[157, 212]],\n", + " \n", + " [[157, 215]],\n", + " \n", + " [[156, 216]],\n", + " \n", + " [[155, 216]],\n", + " \n", + " [[154, 215]],\n", + " \n", + " [[154, 214]],\n", + " \n", + " [[153, 214]],\n", + " \n", + " [[152, 213]],\n", + " \n", + " [[151, 214]],\n", + " \n", + " [[150, 213]],\n", + " \n", + " [[148, 213]],\n", + " \n", + " [[147, 212]],\n", + " \n", + " [[148, 211]],\n", + " \n", + " [[148, 209]],\n", + " \n", + " [[149, 208]],\n", + " \n", + " [[150, 209]],\n", + " \n", + " [[151, 209]],\n", + " \n", + " [[152, 210]],\n", + " \n", + " [[151, 209]]], dtype=int32),\n", + " array([[[ 35, 208]],\n", + " \n", + " [[ 36, 207]],\n", + " \n", + " [[ 37, 208]],\n", + " \n", + " [[ 36, 209]]], dtype=int32),\n", + " array([[[183, 206]],\n", + " \n", + " [[184, 207]],\n", + " \n", + " [[184, 208]],\n", + " \n", + " [[183, 209]],\n", + " \n", + " [[182, 209]],\n", + " \n", + " [[181, 208]]], dtype=int32),\n", + " array([[[159, 207]],\n", + " \n", + " [[160, 206]],\n", + " \n", + " [[161, 207]],\n", + " \n", + " [[160, 208]]], dtype=int32),\n", + " array([[[ 73, 206]],\n", + " \n", + " [[ 74, 206]],\n", + " \n", + " [[ 75, 207]],\n", + " \n", + " [[ 75, 209]],\n", + " \n", + " [[ 74, 210]],\n", + " \n", + " [[ 73, 210]],\n", + " \n", + " [[ 71, 208]]], dtype=int32),\n", + " array([[[183, 206]],\n", + " \n", + " [[184, 205]],\n", + " \n", + " [[185, 206]],\n", + " \n", + " [[184, 207]]], dtype=int32),\n", + " array([[[166, 206]],\n", + " \n", + " [[167, 205]],\n", + " \n", + " [[168, 206]],\n", + " \n", + " [[168, 216]],\n", + " \n", + " [[169, 217]],\n", + " \n", + " [[169, 221]],\n", + " \n", + " [[168, 222]],\n", + " \n", + " [[167, 221]],\n", + " \n", + " [[167, 218]],\n", + " \n", + " [[166, 218]],\n", + " \n", + " [[165, 219]],\n", + " \n", + " [[166, 218]],\n", + " \n", + " [[167, 219]],\n", + " \n", + " [[167, 222]],\n", + " \n", + " [[166, 223]],\n", + " \n", + " [[164, 223]],\n", + " \n", + " [[163, 222]],\n", + " \n", + " [[163, 218]],\n", + " \n", + " [[164, 217]],\n", + " \n", + " [[164, 216]],\n", + " \n", + " [[163, 215]],\n", + " \n", + " [[164, 214]],\n", + " \n", + " [[163, 215]],\n", + " \n", + " [[162, 214]],\n", + " \n", + " [[162, 212]],\n", + " \n", + " [[159, 212]],\n", + " \n", + " [[158, 211]],\n", + " \n", + " [[159, 210]],\n", + " \n", + " [[161, 210]],\n", + " \n", + " [[161, 209]],\n", + " \n", + " [[160, 208]],\n", + " \n", + " [[161, 207]],\n", + " \n", + " [[162, 207]],\n", + " \n", + " [[163, 208]],\n", + " \n", + " [[163, 209]],\n", + " \n", + " [[166, 212]]], dtype=int32),\n", + " array([[[142, 206]],\n", + " \n", + " [[142, 207]],\n", + " \n", + " [[143, 207]]], dtype=int32),\n", + " array([[[ 93, 206]],\n", + " \n", + " [[ 92, 207]],\n", + " \n", + " [[ 90, 207]],\n", + " \n", + " [[ 94, 207]],\n", + " \n", + " [[ 95, 208]],\n", + " \n", + " [[ 95, 209]],\n", + " \n", + " [[ 96, 209]],\n", + " \n", + " [[ 97, 210]],\n", + " \n", + " [[ 98, 210]],\n", + " \n", + " [[100, 212]],\n", + " \n", + " [[101, 212]],\n", + " \n", + " [[101, 211]],\n", + " \n", + " [[103, 209]],\n", + " \n", + " [[104, 209]],\n", + " \n", + " [[103, 208]],\n", + " \n", + " [[101, 208]],\n", + " \n", + " [[101, 209]],\n", + " \n", + " [[ 99, 211]],\n", + " \n", + " [[ 96, 208]],\n", + " \n", + " [[ 95, 208]]], dtype=int32),\n", + " array([[[160, 205]],\n", + " \n", + " [[161, 204]],\n", + " \n", + " [[162, 204]],\n", + " \n", + " [[163, 205]],\n", + " \n", + " [[163, 206]],\n", + " \n", + " [[162, 207]],\n", + " \n", + " [[161, 207]],\n", + " \n", + " [[160, 206]]], dtype=int32),\n", + " array([[[151, 203]],\n", + " \n", + " [[152, 202]],\n", + " \n", + " [[154, 202]],\n", + " \n", + " [[155, 203]],\n", + " \n", + " [[156, 203]],\n", + " \n", + " [[157, 204]],\n", + " \n", + " [[157, 205]],\n", + " \n", + " [[156, 206]],\n", + " \n", + " [[154, 206]],\n", + " \n", + " [[153, 205]],\n", + " \n", + " [[152, 205]],\n", + " \n", + " [[152, 206]],\n", + " \n", + " [[151, 207]],\n", + " \n", + " [[148, 204]],\n", + " \n", + " [[149, 203]]], dtype=int32),\n", + " array([[[187, 202]],\n", + " \n", + " [[188, 201]],\n", + " \n", + " [[189, 201]],\n", + " \n", + " [[190, 202]],\n", + " \n", + " [[189, 203]],\n", + " \n", + " [[188, 203]]], dtype=int32),\n", + " array([[[185, 202]],\n", + " \n", + " [[186, 201]],\n", + " \n", + " [[188, 203]],\n", + " \n", + " [[188, 205]],\n", + " \n", + " [[187, 206]],\n", + " \n", + " [[186, 205]],\n", + " \n", + " [[185, 205]],\n", + " \n", + " [[184, 204]],\n", + " \n", + " [[185, 203]]], dtype=int32),\n", + " array([[[150, 202]],\n", + " \n", + " [[151, 201]],\n", + " \n", + " [[152, 202]],\n", + " \n", + " [[151, 203]]], dtype=int32),\n", + " array([[[ 76, 202]]], dtype=int32),\n", + " array([[[167, 201]],\n", + " \n", + " [[168, 200]],\n", + " \n", + " [[169, 201]],\n", + " \n", + " [[169, 203]],\n", + " \n", + " [[168, 204]],\n", + " \n", + " [[167, 203]]], dtype=int32),\n", + " array([[[151, 201]],\n", + " \n", + " [[152, 200]],\n", + " \n", + " [[153, 201]],\n", + " \n", + " [[152, 202]]], dtype=int32),\n", + " array([[[ 71, 201]],\n", + " \n", + " [[ 72, 200]],\n", + " \n", + " [[ 73, 201]],\n", + " \n", + " [[ 72, 202]]], dtype=int32),\n", + " array([[[ 29, 200]],\n", + " \n", + " [[ 30, 199]],\n", + " \n", + " [[ 31, 200]],\n", + " \n", + " [[ 30, 201]]], dtype=int32),\n", + " array([[[187, 199]],\n", + " \n", + " [[188, 198]],\n", + " \n", + " [[189, 199]],\n", + " \n", + " [[188, 200]]], dtype=int32),\n", + " array([[[184, 199]],\n", + " \n", + " [[185, 198]],\n", + " \n", + " [[186, 199]],\n", + " \n", + " [[185, 200]]], dtype=int32),\n", + " array([[[168, 199]],\n", + " \n", + " [[169, 198]],\n", + " \n", + " [[170, 199]],\n", + " \n", + " [[170, 200]],\n", + " \n", + " [[169, 201]],\n", + " \n", + " [[168, 200]]], dtype=int32),\n", + " array([[[151, 199]],\n", + " \n", + " [[152, 198]],\n", + " \n", + " [[153, 199]],\n", + " \n", + " [[152, 200]]], dtype=int32),\n", + " array([[[138, 199]]], dtype=int32),\n", + " array([[[186, 198]],\n", + " \n", + " [[187, 197]],\n", + " \n", + " [[188, 198]],\n", + " \n", + " [[187, 199]]], dtype=int32),\n", + " array([[[153, 198]],\n", + " \n", + " [[154, 197]],\n", + " \n", + " [[155, 198]],\n", + " \n", + " [[154, 199]]], dtype=int32),\n", + " array([[[144, 198]],\n", + " \n", + " [[145, 197]],\n", + " \n", + " [[146, 198]],\n", + " \n", + " [[145, 199]]], dtype=int32),\n", + " array([[[183, 197]],\n", + " \n", + " [[184, 196]],\n", + " \n", + " [[185, 197]],\n", + " \n", + " [[185, 198]],\n", + " \n", + " [[184, 199]],\n", + " \n", + " [[183, 198]]], dtype=int32),\n", + " array([[[169, 197]],\n", + " \n", + " [[170, 196]],\n", + " \n", + " [[171, 197]],\n", + " \n", + " [[171, 198]],\n", + " \n", + " [[170, 199]],\n", + " \n", + " [[169, 198]]], dtype=int32),\n", + " array([[[170, 195]],\n", + " \n", + " [[171, 194]],\n", + " \n", + " [[172, 195]],\n", + " \n", + " [[171, 196]]], dtype=int32),\n", + " array([[[152, 195]],\n", + " \n", + " [[153, 194]],\n", + " \n", + " [[154, 194]],\n", + " \n", + " [[155, 195]],\n", + " \n", + " [[154, 196]],\n", + " \n", + " [[153, 196]]], dtype=int32),\n", + " array([[[ 72, 195]],\n", + " \n", + " [[ 71, 196]],\n", + " \n", + " [[ 72, 196]]], dtype=int32),\n", + " array([[[ 53, 195]],\n", + " \n", + " [[ 54, 194]],\n", + " \n", + " [[ 55, 194]],\n", + " \n", + " [[ 56, 195]],\n", + " \n", + " [[ 59, 195]],\n", + " \n", + " [[ 60, 196]],\n", + " \n", + " [[ 58, 198]],\n", + " \n", + " [[ 56, 198]],\n", + " \n", + " [[ 55, 199]],\n", + " \n", + " [[ 53, 197]],\n", + " \n", + " [[ 51, 197]],\n", + " \n", + " [[ 50, 196]],\n", + " \n", + " [[ 51, 195]]], dtype=int32),\n", + " array([[[155, 194]],\n", + " \n", + " [[156, 193]],\n", + " \n", + " [[157, 194]],\n", + " \n", + " [[158, 194]],\n", + " \n", + " [[160, 196]],\n", + " \n", + " [[160, 197]],\n", + " \n", + " [[159, 198]],\n", + " \n", + " [[158, 197]],\n", + " \n", + " [[157, 197]],\n", + " \n", + " [[155, 195]]], dtype=int32),\n", + " array([[[ 55, 194]],\n", + " \n", + " [[ 56, 193]],\n", + " \n", + " [[ 57, 194]],\n", + " \n", + " [[ 56, 195]]], dtype=int32),\n", + " array([[[ 57, 193]],\n", + " \n", + " [[ 58, 192]],\n", + " \n", + " [[ 59, 192]],\n", + " \n", + " [[ 60, 193]],\n", + " \n", + " [[ 59, 194]],\n", + " \n", + " [[ 58, 194]]], dtype=int32),\n", + " array([[[ 51, 193]],\n", + " \n", + " [[ 52, 192]],\n", + " \n", + " [[ 53, 192]],\n", + " \n", + " [[ 54, 193]],\n", + " \n", + " [[ 53, 194]],\n", + " \n", + " [[ 52, 194]]], dtype=int32),\n", + " array([[[192, 189]],\n", + " \n", + " [[193, 188]],\n", + " \n", + " [[194, 189]],\n", + " \n", + " [[193, 190]]], dtype=int32),\n", + " array([[[176, 189]],\n", + " \n", + " [[177, 188]],\n", + " \n", + " [[178, 189]],\n", + " \n", + " [[178, 190]],\n", + " \n", + " [[177, 191]],\n", + " \n", + " [[176, 190]]], dtype=int32),\n", + " array([[[171, 188]],\n", + " \n", + " [[172, 187]],\n", + " \n", + " [[173, 188]],\n", + " \n", + " [[172, 189]]], dtype=int32),\n", + " array([[[142, 188]],\n", + " \n", + " [[143, 187]],\n", + " \n", + " [[144, 188]],\n", + " \n", + " [[143, 189]]], dtype=int32),\n", + " array([[[ 71, 188]],\n", + " \n", + " [[ 72, 187]],\n", + " \n", + " [[ 73, 188]],\n", + " \n", + " [[ 72, 189]]], dtype=int32),\n", + " array([[[ 68, 188]],\n", + " \n", + " [[ 69, 187]],\n", + " \n", + " [[ 70, 188]],\n", + " \n", + " [[ 69, 189]]], dtype=int32),\n", + " array([[[177, 187]],\n", + " \n", + " [[178, 186]],\n", + " \n", + " [[179, 187]],\n", + " \n", + " [[178, 188]]], dtype=int32),\n", + " array([[[192, 186]],\n", + " \n", + " [[193, 185]],\n", + " \n", + " [[194, 186]],\n", + " \n", + " [[194, 187]],\n", + " \n", + " [[193, 188]],\n", + " \n", + " [[192, 187]]], dtype=int32),\n", + " array([[[ 69, 185]],\n", + " \n", + " [[ 70, 184]],\n", + " \n", + " [[ 71, 185]],\n", + " \n", + " [[ 71, 186]],\n", + " \n", + " [[ 70, 187]],\n", + " \n", + " [[ 69, 186]]], dtype=int32),\n", + " array([[[ 36, 185]],\n", + " \n", + " [[ 37, 184]],\n", + " \n", + " [[ 38, 185]],\n", + " \n", + " [[ 37, 186]]], dtype=int32),\n", + " array([[[ 78, 184]],\n", + " \n", + " [[ 79, 183]],\n", + " \n", + " [[ 80, 184]],\n", + " \n", + " [[ 79, 185]]], dtype=int32),\n", + " array([[[ 77, 183]],\n", + " \n", + " [[ 78, 182]],\n", + " \n", + " [[ 79, 183]],\n", + " \n", + " [[ 78, 184]]], dtype=int32),\n", + " array([[[ 37, 183]],\n", + " \n", + " [[ 38, 182]],\n", + " \n", + " [[ 39, 183]],\n", + " \n", + " [[ 38, 184]]], dtype=int32),\n", + " array([[[154, 181]],\n", + " \n", + " [[155, 180]],\n", + " \n", + " [[156, 181]],\n", + " \n", + " [[155, 182]]], dtype=int32),\n", + " array([[[153, 180]],\n", + " \n", + " [[154, 179]],\n", + " \n", + " [[155, 180]],\n", + " \n", + " [[154, 181]]], dtype=int32),\n", + " array([[[ 67, 179]],\n", + " \n", + " [[ 68, 178]],\n", + " \n", + " [[ 69, 179]],\n", + " \n", + " [[ 69, 182]],\n", + " \n", + " [[ 68, 183]],\n", + " \n", + " [[ 67, 183]],\n", + " \n", + " [[ 66, 182]],\n", + " \n", + " [[ 66, 181]],\n", + " \n", + " [[ 67, 180]]], dtype=int32),\n", + " array([[[162, 178]],\n", + " \n", + " [[163, 177]],\n", + " \n", + " [[164, 178]],\n", + " \n", + " [[163, 179]]], dtype=int32),\n", + " array([[[161, 176]],\n", + " \n", + " [[162, 175]],\n", + " \n", + " [[163, 176]],\n", + " \n", + " [[162, 177]]], dtype=int32),\n", + " array([[[159, 176]],\n", + " \n", + " [[160, 175]],\n", + " \n", + " [[161, 176]],\n", + " \n", + " [[161, 177]],\n", + " \n", + " [[160, 178]],\n", + " \n", + " [[159, 177]]], dtype=int32),\n", + " array([[[ 77, 176]],\n", + " \n", + " [[ 78, 175]],\n", + " \n", + " [[ 79, 176]],\n", + " \n", + " [[ 79, 177]],\n", + " \n", + " [[ 78, 178]],\n", + " \n", + " [[ 77, 177]]], dtype=int32),\n", + " array([[[198, 175]],\n", + " \n", + " [[199, 174]],\n", + " \n", + " [[200, 175]],\n", + " \n", + " [[200, 176]],\n", + " \n", + " [[202, 178]],\n", + " \n", + " [[202, 180]],\n", + " \n", + " [[201, 181]],\n", + " \n", + " [[200, 181]],\n", + " \n", + " [[200, 183]],\n", + " \n", + " [[198, 185]],\n", + " \n", + " [[197, 184]],\n", + " \n", + " [[197, 182]],\n", + " \n", + " [[198, 181]]], dtype=int32),\n", + " array([[[ 88, 175]],\n", + " \n", + " [[ 89, 174]],\n", + " \n", + " [[ 95, 174]],\n", + " \n", + " [[ 96, 175]],\n", + " \n", + " [[102, 175]],\n", + " \n", + " [[103, 174]],\n", + " \n", + " [[104, 174]],\n", + " \n", + " [[105, 175]],\n", + " \n", + " [[105, 177]],\n", + " \n", + " [[106, 178]],\n", + " \n", + " [[106, 179]],\n", + " \n", + " [[105, 180]],\n", + " \n", + " [[105, 181]],\n", + " \n", + " [[104, 182]],\n", + " \n", + " [[104, 183]],\n", + " \n", + " [[102, 185]],\n", + " \n", + " [[101, 185]],\n", + " \n", + " [[ 99, 187]],\n", + " \n", + " [[ 97, 187]],\n", + " \n", + " [[ 96, 188]],\n", + " \n", + " [[ 94, 188]],\n", + " \n", + " [[ 93, 187]],\n", + " \n", + " [[ 92, 187]],\n", + " \n", + " [[ 90, 185]],\n", + " \n", + " [[ 90, 186]],\n", + " \n", + " [[ 89, 187]],\n", + " \n", + " [[ 88, 186]],\n", + " \n", + " [[ 88, 185]],\n", + " \n", + " [[ 87, 185]],\n", + " \n", + " [[ 86, 186]],\n", + " \n", + " [[ 85, 186]],\n", + " \n", + " [[ 84, 187]],\n", + " \n", + " [[ 82, 187]],\n", + " \n", + " [[ 81, 186]],\n", + " \n", + " [[ 80, 186]],\n", + " \n", + " [[ 79, 185]],\n", + " \n", + " [[ 80, 184]],\n", + " \n", + " [[ 82, 184]],\n", + " \n", + " [[ 82, 182]],\n", + " \n", + " [[ 81, 181]],\n", + " \n", + " [[ 80, 181]],\n", + " \n", + " [[ 79, 180]],\n", + " \n", + " [[ 79, 176]],\n", + " \n", + " [[ 80, 175]]], dtype=int32),\n", + " array([[[ 43, 175]],\n", + " \n", + " [[ 44, 174]],\n", + " \n", + " [[ 45, 175]],\n", + " \n", + " [[ 44, 176]]], dtype=int32),\n", + " array([[[156, 174]],\n", + " \n", + " [[157, 173]],\n", + " \n", + " [[161, 173]],\n", + " \n", + " [[162, 174]],\n", + " \n", + " [[162, 175]],\n", + " \n", + " [[161, 176]],\n", + " \n", + " [[160, 175]],\n", + " \n", + " [[159, 176]],\n", + " \n", + " [[158, 175]],\n", + " \n", + " [[157, 175]]], dtype=int32),\n", + " array([[[ 34, 174]],\n", + " \n", + " [[ 34, 175]]], dtype=int32),\n", + " array([[[159, 172]],\n", + " \n", + " [[160, 171]],\n", + " \n", + " [[161, 172]],\n", + " \n", + " [[160, 173]]], dtype=int32),\n", + " array([[[202, 171]]], dtype=int32),\n", + " array([[[115, 167]],\n", + " \n", + " [[116, 167]],\n", + " \n", + " [[117, 168]],\n", + " \n", + " [[119, 168]],\n", + " \n", + " [[121, 170]],\n", + " \n", + " [[120, 171]],\n", + " \n", + " [[117, 171]],\n", + " \n", + " [[116, 172]],\n", + " \n", + " [[114, 172]],\n", + " \n", + " [[114, 173]],\n", + " \n", + " [[113, 174]],\n", + " \n", + " [[113, 175]],\n", + " \n", + " [[112, 176]],\n", + " \n", + " [[112, 177]],\n", + " \n", + " [[111, 178]],\n", + " \n", + " [[110, 178]],\n", + " \n", + " [[109, 177]],\n", + " \n", + " [[109, 173]]], dtype=int32),\n", + " array([[[ 85, 167]],\n", + " \n", + " [[ 86, 166]],\n", + " \n", + " [[ 87, 167]],\n", + " \n", + " [[ 86, 168]]], dtype=int32),\n", + " array([[[134, 166]],\n", + " \n", + " [[135, 165]],\n", + " \n", + " [[136, 166]],\n", + " \n", + " [[135, 167]]], dtype=int32),\n", + " array([[[ 73, 165]],\n", + " \n", + " [[ 74, 166]],\n", + " \n", + " [[ 74, 168]],\n", + " \n", + " [[ 73, 169]],\n", + " \n", + " [[ 71, 167]]], dtype=int32),\n", + " array([[[133, 165]],\n", + " \n", + " [[134, 164]],\n", + " \n", + " [[135, 165]],\n", + " \n", + " [[134, 166]]], dtype=int32),\n", + " array([[[192, 164]],\n", + " \n", + " [[193, 163]],\n", + " \n", + " [[194, 164]],\n", + " \n", + " [[194, 165]],\n", + " \n", + " [[193, 166]],\n", + " \n", + " [[192, 165]]], dtype=int32),\n", + " array([[[ 68, 164]],\n", + " \n", + " [[ 69, 163]],\n", + " \n", + " [[ 70, 164]],\n", + " \n", + " [[ 69, 165]]], dtype=int32),\n", + " array([[[191, 162]],\n", + " \n", + " [[192, 161]],\n", + " \n", + " [[193, 162]],\n", + " \n", + " [[192, 163]]], dtype=int32),\n", + " array([[[128, 162]],\n", + " \n", + " [[129, 161]],\n", + " \n", + " [[131, 161]],\n", + " \n", + " [[132, 162]],\n", + " \n", + " [[133, 162]],\n", + " \n", + " [[134, 163]],\n", + " \n", + " [[134, 164]],\n", + " \n", + " [[133, 165]],\n", + " \n", + " [[132, 164]],\n", + " \n", + " [[131, 164]],\n", + " \n", + " [[130, 163]],\n", + " \n", + " [[129, 163]]], dtype=int32),\n", + " array([[[ 43, 162]],\n", + " \n", + " [[ 44, 161]],\n", + " \n", + " [[ 45, 162]],\n", + " \n", + " [[ 44, 163]]], dtype=int32),\n", + " array([[[ 85, 161]]], dtype=int32),\n", + " array([[[186, 160]],\n", + " \n", + " [[187, 159]],\n", + " \n", + " [[188, 160]],\n", + " \n", + " [[188, 161]],\n", + " \n", + " [[189, 162]],\n", + " \n", + " [[189, 166]],\n", + " \n", + " [[188, 167]],\n", + " \n", + " [[188, 168]],\n", + " \n", + " [[187, 169]],\n", + " \n", + " [[186, 168]]], dtype=int32),\n", + " array([[[168, 160]],\n", + " \n", + " [[166, 162]],\n", + " \n", + " [[166, 166]],\n", + " \n", + " [[167, 167]],\n", + " \n", + " [[168, 166]],\n", + " \n", + " [[167, 165]],\n", + " \n", + " [[167, 164]],\n", + " \n", + " [[168, 163]],\n", + " \n", + " [[170, 163]],\n", + " \n", + " [[170, 162]],\n", + " \n", + " [[169, 161]],\n", + " \n", + " [[169, 160]]], dtype=int32),\n", + " array([[[156, 160]],\n", + " \n", + " [[157, 159]],\n", + " \n", + " [[158, 160]],\n", + " \n", + " [[157, 161]]], dtype=int32),\n", + " array([[[ 85, 159]]], dtype=int32),\n", + " array([[[ 70, 158]],\n", + " \n", + " [[ 72, 158]],\n", + " \n", + " [[ 73, 159]],\n", + " \n", + " [[ 72, 160]],\n", + " \n", + " [[ 71, 160]],\n", + " \n", + " [[ 70, 161]],\n", + " \n", + " [[ 69, 161]],\n", + " \n", + " [[ 68, 160]]], dtype=int32),\n", + " array([[[190, 158]],\n", + " \n", + " [[191, 157]],\n", + " \n", + " [[192, 158]],\n", + " \n", + " [[191, 159]]], dtype=int32),\n", + " array([[[124, 157]],\n", + " \n", + " [[125, 156]],\n", + " \n", + " [[128, 156]],\n", + " \n", + " [[131, 159]],\n", + " \n", + " [[130, 160]],\n", + " \n", + " [[127, 160]],\n", + " \n", + " [[126, 159]],\n", + " \n", + " [[123, 159]],\n", + " \n", + " [[122, 158]],\n", + " \n", + " [[123, 157]]], dtype=int32),\n", + " array([[[ 84, 157]]], dtype=int32),\n", + " array([[[ 44, 157]],\n", + " \n", + " [[ 45, 156]],\n", + " \n", + " [[ 46, 157]],\n", + " \n", + " [[ 46, 158]],\n", + " \n", + " [[ 45, 159]],\n", + " \n", + " [[ 44, 158]]], dtype=int32),\n", + " array([[[ 45, 155]],\n", + " \n", + " [[ 46, 154]],\n", + " \n", + " [[ 47, 155]],\n", + " \n", + " [[ 46, 156]]], dtype=int32),\n", + " array([[[194, 153]],\n", + " \n", + " [[195, 152]],\n", + " \n", + " [[196, 153]],\n", + " \n", + " [[196, 154]],\n", + " \n", + " [[195, 155]],\n", + " \n", + " [[194, 154]]], dtype=int32),\n", + " array([[[ 84, 152]],\n", + " \n", + " [[ 85, 151]],\n", + " \n", + " [[ 86, 152]],\n", + " \n", + " [[ 86, 153]],\n", + " \n", + " [[ 87, 154]],\n", + " \n", + " [[ 87, 155]],\n", + " \n", + " [[ 88, 156]],\n", + " \n", + " [[ 95, 156]],\n", + " \n", + " [[ 96, 155]],\n", + " \n", + " [[ 97, 156]],\n", + " \n", + " [[103, 156]],\n", + " \n", + " [[104, 157]],\n", + " \n", + " [[106, 157]],\n", + " \n", + " [[109, 160]],\n", + " \n", + " [[108, 161]],\n", + " \n", + " [[106, 161]],\n", + " \n", + " [[106, 163]],\n", + " \n", + " [[103, 166]],\n", + " \n", + " [[102, 166]],\n", + " \n", + " [[101, 167]],\n", + " \n", + " [[100, 167]],\n", + " \n", + " [[ 99, 168]],\n", + " \n", + " [[ 98, 168]],\n", + " \n", + " [[ 97, 169]],\n", + " \n", + " [[ 93, 169]],\n", + " \n", + " [[ 92, 168]],\n", + " \n", + " [[ 91, 168]],\n", + " \n", + " [[ 90, 167]],\n", + " \n", + " [[ 89, 167]],\n", + " \n", + " [[ 88, 166]],\n", + " \n", + " [[ 88, 165]],\n", + " \n", + " [[ 87, 164]],\n", + " \n", + " [[ 87, 160]],\n", + " \n", + " [[ 87, 162]],\n", + " \n", + " [[ 86, 163]],\n", + " \n", + " [[ 86, 166]],\n", + " \n", + " [[ 85, 167]],\n", + " \n", + " [[ 84, 166]],\n", + " \n", + " [[ 83, 167]],\n", + " \n", + " [[ 82, 167]],\n", + " \n", + " [[ 81, 168]],\n", + " \n", + " [[ 77, 168]],\n", + " \n", + " [[ 74, 165]],\n", + " \n", + " [[ 74, 164]],\n", + " \n", + " [[ 73, 163]],\n", + " \n", + " [[ 74, 162]],\n", + " \n", + " [[ 74, 161]],\n", + " \n", + " [[ 75, 160]],\n", + " \n", + " [[ 75, 158]],\n", + " \n", + " [[ 76, 157]],\n", + " \n", + " [[ 78, 157]],\n", + " \n", + " [[ 79, 156]],\n", + " \n", + " [[ 80, 156]],\n", + " \n", + " [[ 81, 155]],\n", + " \n", + " [[ 84, 155]],\n", + " \n", + " [[ 83, 154]],\n", + " \n", + " [[ 84, 153]]], dtype=int32),\n", + " array([[[159, 151]]], dtype=int32),\n", + " array([[[194, 150]],\n", + " \n", + " [[195, 149]],\n", + " \n", + " [[196, 150]],\n", + " \n", + " [[195, 151]]], dtype=int32),\n", + " array([[[ 85, 150]],\n", + " \n", + " [[ 86, 149]],\n", + " \n", + " [[ 87, 150]],\n", + " \n", + " [[ 87, 151]],\n", + " \n", + " [[ 86, 152]],\n", + " \n", + " [[ 85, 151]]], dtype=int32),\n", + " array([[[ 83, 148]],\n", + " \n", + " [[ 84, 147]],\n", + " \n", + " [[ 85, 148]],\n", + " \n", + " [[ 84, 149]]], dtype=int32),\n", + " array([[[ 47, 148]],\n", + " \n", + " [[ 48, 147]],\n", + " \n", + " [[ 49, 148]],\n", + " \n", + " [[ 49, 149]],\n", + " \n", + " [[ 48, 150]],\n", + " \n", + " [[ 47, 149]]], dtype=int32),\n", + " array([[[ 59, 145]],\n", + " \n", + " [[ 60, 144]],\n", + " \n", + " [[ 61, 144]],\n", + " \n", + " [[ 63, 146]],\n", + " \n", + " [[ 63, 147]],\n", + " \n", + " [[ 67, 151]],\n", + " \n", + " [[ 69, 151]],\n", + " \n", + " [[ 70, 152]],\n", + " \n", + " [[ 72, 152]],\n", + " \n", + " [[ 73, 151]],\n", + " \n", + " [[ 75, 151]],\n", + " \n", + " [[ 76, 150]],\n", + " \n", + " [[ 78, 150]],\n", + " \n", + " [[ 79, 149]],\n", + " \n", + " [[ 80, 149]],\n", + " \n", + " [[ 81, 150]],\n", + " \n", + " [[ 79, 152]],\n", + " \n", + " [[ 78, 152]],\n", + " \n", + " [[ 77, 153]],\n", + " \n", + " [[ 76, 153]],\n", + " \n", + " [[ 75, 154]],\n", + " \n", + " [[ 72, 154]],\n", + " \n", + " [[ 71, 155]],\n", + " \n", + " [[ 69, 155]],\n", + " \n", + " [[ 68, 154]],\n", + " \n", + " [[ 67, 154]],\n", + " \n", + " [[ 66, 153]],\n", + " \n", + " [[ 65, 154]],\n", + " \n", + " [[ 65, 162]],\n", + " \n", + " [[ 64, 163]],\n", + " \n", + " [[ 64, 164]],\n", + " \n", + " [[ 63, 165]],\n", + " \n", + " [[ 63, 166]],\n", + " \n", + " [[ 61, 168]],\n", + " \n", + " [[ 61, 169]],\n", + " \n", + " [[ 60, 170]],\n", + " \n", + " [[ 60, 171]],\n", + " \n", + " [[ 53, 178]],\n", + " \n", + " [[ 52, 178]],\n", + " \n", + " [[ 51, 179]],\n", + " \n", + " [[ 49, 177]],\n", + " \n", + " [[ 49, 174]],\n", + " \n", + " [[ 50, 173]],\n", + " \n", + " [[ 50, 172]],\n", + " \n", + " [[ 51, 171]],\n", + " \n", + " [[ 52, 171]],\n", + " \n", + " [[ 54, 169]],\n", + " \n", + " [[ 53, 169]],\n", + " \n", + " [[ 52, 168]],\n", + " \n", + " [[ 53, 167]],\n", + " \n", + " [[ 56, 167]],\n", + " \n", + " [[ 57, 168]],\n", + " \n", + " [[ 58, 167]],\n", + " \n", + " [[ 59, 167]],\n", + " \n", + " [[ 59, 166]],\n", + " \n", + " [[ 60, 165]],\n", + " \n", + " [[ 59, 164]],\n", + " \n", + " [[ 59, 163]],\n", + " \n", + " [[ 58, 163]],\n", + " \n", + " [[ 58, 164]],\n", + " \n", + " [[ 57, 165]],\n", + " \n", + " [[ 56, 164]],\n", + " \n", + " [[ 56, 163]],\n", + " \n", + " [[ 56, 164]],\n", + " \n", + " [[ 57, 165]],\n", + " \n", + " [[ 57, 166]],\n", + " \n", + " [[ 56, 167]],\n", + " \n", + " [[ 54, 167]],\n", + " \n", + " [[ 53, 166]],\n", + " \n", + " [[ 53, 165]],\n", + " \n", + " [[ 54, 164]],\n", + " \n", + " [[ 54, 162]],\n", + " \n", + " [[ 55, 161]],\n", + " \n", + " [[ 55, 156]],\n", + " \n", + " [[ 56, 155]],\n", + " \n", + " [[ 56, 153]],\n", + " \n", + " [[ 57, 152]],\n", + " \n", + " [[ 57, 151]],\n", + " \n", + " [[ 56, 150]],\n", + " \n", + " [[ 58, 148]],\n", + " \n", + " [[ 59, 148]],\n", + " \n", + " [[ 60, 149]],\n", + " \n", + " [[ 59, 148]],\n", + " \n", + " [[ 58, 148]],\n", + " \n", + " [[ 57, 147]],\n", + " \n", + " [[ 57, 146]],\n", + " \n", + " [[ 58, 145]]], dtype=int32),\n", + " array([[[ 48, 145]],\n", + " \n", + " [[ 49, 144]],\n", + " \n", + " [[ 50, 145]],\n", + " \n", + " [[ 50, 147]],\n", + " \n", + " [[ 49, 148]],\n", + " \n", + " [[ 48, 147]]], dtype=int32),\n", + " array([[[158, 143]],\n", + " \n", + " [[159, 142]],\n", + " \n", + " [[161, 142]],\n", + " \n", + " [[162, 143]],\n", + " \n", + " [[166, 143]],\n", + " \n", + " [[167, 144]],\n", + " \n", + " [[168, 144]],\n", + " \n", + " [[169, 145]],\n", + " \n", + " [[170, 145]],\n", + " \n", + " [[172, 147]],\n", + " \n", + " [[172, 148]],\n", + " \n", + " [[173, 149]],\n", + " \n", + " [[173, 151]],\n", + " \n", + " [[174, 152]],\n", + " \n", + " [[174, 153]],\n", + " \n", + " [[175, 154]],\n", + " \n", + " [[175, 157]],\n", + " \n", + " [[176, 158]],\n", + " \n", + " [[176, 169]],\n", + " \n", + " [[175, 170]],\n", + " \n", + " [[175, 171]],\n", + " \n", + " [[174, 172]],\n", + " \n", + " [[174, 173]],\n", + " \n", + " [[171, 176]],\n", + " \n", + " [[168, 176]],\n", + " \n", + " [[167, 175]],\n", + " \n", + " [[166, 175]],\n", + " \n", + " [[163, 172]],\n", + " \n", + " [[163, 171]],\n", + " \n", + " [[160, 168]],\n", + " \n", + " [[160, 167]],\n", + " \n", + " [[159, 166]],\n", + " \n", + " [[159, 164]],\n", + " \n", + " [[158, 163]],\n", + " \n", + " [[158, 159]],\n", + " \n", + " [[157, 158]],\n", + " \n", + " [[157, 154]],\n", + " \n", + " [[158, 153]],\n", + " \n", + " [[159, 154]],\n", + " \n", + " [[159, 155]],\n", + " \n", + " [[159, 154]],\n", + " \n", + " [[157, 152]],\n", + " \n", + " [[157, 145]],\n", + " \n", + " [[158, 144]]], dtype=int32),\n", + " array([[[184, 138]],\n", + " \n", + " [[185, 139]],\n", + " \n", + " [[185, 141]],\n", + " \n", + " [[182, 144]],\n", + " \n", + " [[183, 145]],\n", + " \n", + " [[183, 146]],\n", + " \n", + " [[184, 146]],\n", + " \n", + " [[185, 147]],\n", + " \n", + " [[184, 148]],\n", + " \n", + " [[185, 149]],\n", + " \n", + " [[185, 145]],\n", + " \n", + " [[186, 144]],\n", + " \n", + " [[187, 145]],\n", + " \n", + " [[187, 147]],\n", + " \n", + " [[188, 148]],\n", + " \n", + " [[188, 151]],\n", + " \n", + " [[187, 152]],\n", + " \n", + " [[186, 152]],\n", + " \n", + " [[185, 151]],\n", + " \n", + " [[184, 151]],\n", + " \n", + " [[180, 147]],\n", + " \n", + " [[180, 143]],\n", + " \n", + " [[182, 141]],\n", + " \n", + " [[182, 140]]], dtype=int32),\n", + " array([[[198, 138]],\n", + " \n", + " [[198, 144]],\n", + " \n", + " [[199, 144]],\n", + " \n", + " [[200, 145]],\n", + " \n", + " [[200, 144]],\n", + " \n", + " [[201, 143]],\n", + " \n", + " [[201, 140]],\n", + " \n", + " [[200, 139]],\n", + " \n", + " [[199, 139]]], dtype=int32),\n", + " array([[[146, 135]],\n", + " \n", + " [[149, 135]],\n", + " \n", + " [[150, 136]],\n", + " \n", + " [[150, 137]],\n", + " \n", + " [[155, 142]],\n", + " \n", + " [[154, 143]],\n", + " \n", + " [[153, 143]],\n", + " \n", + " [[152, 142]],\n", + " \n", + " [[151, 142]],\n", + " \n", + " [[150, 141]],\n", + " \n", + " [[149, 141]],\n", + " \n", + " [[148, 140]],\n", + " \n", + " [[148, 141]],\n", + " \n", + " [[147, 142]],\n", + " \n", + " [[144, 142]],\n", + " \n", + " [[141, 145]],\n", + " \n", + " [[140, 145]],\n", + " \n", + " [[138, 147]],\n", + " \n", + " [[137, 147]],\n", + " \n", + " [[135, 149]],\n", + " \n", + " [[134, 149]],\n", + " \n", + " [[132, 151]],\n", + " \n", + " [[131, 151]],\n", + " \n", + " [[130, 152]],\n", + " \n", + " [[129, 152]],\n", + " \n", + " [[128, 153]],\n", + " \n", + " [[125, 153]],\n", + " \n", + " [[124, 154]],\n", + " \n", + " [[112, 154]],\n", + " \n", + " [[111, 153]],\n", + " \n", + " [[106, 153]],\n", + " \n", + " [[105, 152]],\n", + " \n", + " [[102, 152]],\n", + " \n", + " [[101, 151]],\n", + " \n", + " [[ 98, 151]],\n", + " \n", + " [[ 97, 150]],\n", + " \n", + " [[ 95, 150]],\n", + " \n", + " [[ 94, 149]],\n", + " \n", + " [[ 91, 149]],\n", + " \n", + " [[ 90, 148]],\n", + " \n", + " [[ 86, 148]],\n", + " \n", + " [[ 85, 147]],\n", + " \n", + " [[ 86, 146]],\n", + " \n", + " [[ 87, 146]],\n", + " \n", + " [[ 88, 145]],\n", + " \n", + " [[ 89, 145]],\n", + " \n", + " [[ 90, 146]],\n", + " \n", + " [[ 93, 146]],\n", + " \n", + " [[ 94, 147]],\n", + " \n", + " [[ 97, 147]],\n", + " \n", + " [[ 98, 148]],\n", + " \n", + " [[101, 148]],\n", + " \n", + " [[102, 149]],\n", + " \n", + " [[106, 149]],\n", + " \n", + " [[107, 150]],\n", + " \n", + " [[113, 150]],\n", + " \n", + " [[114, 151]],\n", + " \n", + " [[121, 151]],\n", + " \n", + " [[122, 150]],\n", + " \n", + " [[127, 150]],\n", + " \n", + " [[128, 149]],\n", + " \n", + " [[129, 149]],\n", + " \n", + " [[130, 148]],\n", + " \n", + " [[131, 148]],\n", + " \n", + " [[132, 147]],\n", + " \n", + " [[133, 147]],\n", + " \n", + " [[137, 143]],\n", + " \n", + " [[138, 143]],\n", + " \n", + " [[143, 138]],\n", + " \n", + " [[144, 138]],\n", + " \n", + " [[144, 137]]], dtype=int32),\n", + " array([[[185, 135]],\n", + " \n", + " [[186, 134]],\n", + " \n", + " [[187, 135]],\n", + " \n", + " [[187, 136]],\n", + " \n", + " [[186, 137]],\n", + " \n", + " [[185, 136]]], dtype=int32),\n", + " array([[[169, 131]],\n", + " \n", + " [[170, 130]],\n", + " \n", + " [[171, 131]],\n", + " \n", + " [[171, 132]],\n", + " \n", + " [[172, 133]],\n", + " \n", + " [[172, 135]],\n", + " \n", + " [[173, 136]],\n", + " \n", + " [[172, 137]],\n", + " \n", + " [[171, 137]],\n", + " \n", + " [[170, 136]],\n", + " \n", + " [[170, 134]],\n", + " \n", + " [[169, 133]]], dtype=int32),\n", + " array([[[186, 124]],\n", + " \n", + " [[187, 123]],\n", + " \n", + " [[188, 124]],\n", + " \n", + " [[188, 127]],\n", + " \n", + " [[187, 128]],\n", + " \n", + " [[186, 127]]], dtype=int32),\n", + " array([[[ 54, 124]],\n", + " \n", + " [[ 55, 123]],\n", + " \n", + " [[ 56, 124]],\n", + " \n", + " [[ 55, 125]]], dtype=int32),\n", + " array([[[ 91, 122]],\n", + " \n", + " [[ 92, 123]],\n", + " \n", + " [[ 92, 124]],\n", + " \n", + " [[ 91, 125]],\n", + " \n", + " [[ 91, 126]],\n", + " \n", + " [[ 92, 126]],\n", + " \n", + " [[ 94, 124]],\n", + " \n", + " [[ 96, 124]],\n", + " \n", + " [[ 97, 125]],\n", + " \n", + " [[ 99, 125]],\n", + " \n", + " [[100, 126]],\n", + " \n", + " [[ 99, 127]],\n", + " \n", + " [[ 98, 127]],\n", + " \n", + " [[ 97, 128]],\n", + " \n", + " [[ 94, 128]],\n", + " \n", + " [[ 93, 129]],\n", + " \n", + " [[ 90, 129]],\n", + " \n", + " [[ 90, 130]],\n", + " \n", + " [[ 89, 131]],\n", + " \n", + " [[ 88, 130]],\n", + " \n", + " [[ 84, 130]],\n", + " \n", + " [[ 82, 128]],\n", + " \n", + " [[ 83, 127]],\n", + " \n", + " [[ 84, 127]],\n", + " \n", + " [[ 85, 126]],\n", + " \n", + " [[ 86, 126]],\n", + " \n", + " [[ 87, 125]],\n", + " \n", + " [[ 88, 125]]], dtype=int32),\n", + " array([[[ 91, 122]],\n", + " \n", + " [[ 92, 121]],\n", + " \n", + " [[ 93, 122]],\n", + " \n", + " [[ 92, 123]]], dtype=int32),\n", + " array([[[ 52, 121]],\n", + " \n", + " [[ 53, 120]],\n", + " \n", + " [[ 54, 121]],\n", + " \n", + " [[ 53, 122]]], dtype=int32),\n", + " array([[[183, 113]],\n", + " \n", + " [[184, 112]],\n", + " \n", + " [[185, 113]],\n", + " \n", + " [[184, 114]]], dtype=int32),\n", + " array([[[177, 112]],\n", + " \n", + " [[177, 113]],\n", + " \n", + " [[178, 112]]], dtype=int32),\n", + " array([[[105, 112]],\n", + " \n", + " [[106, 111]],\n", + " \n", + " [[107, 112]],\n", + " \n", + " [[106, 113]]], dtype=int32),\n", + " array([[[ 76, 112]],\n", + " \n", + " [[ 77, 111]],\n", + " \n", + " [[ 78, 111]],\n", + " \n", + " [[ 79, 112]],\n", + " \n", + " [[ 78, 113]],\n", + " \n", + " [[ 77, 113]]], dtype=int32),\n", + " array([[[ 73, 112]],\n", + " \n", + " [[ 74, 111]],\n", + " \n", + " [[ 75, 111]],\n", + " \n", + " [[ 76, 112]],\n", + " \n", + " [[ 75, 113]],\n", + " \n", + " [[ 74, 113]]], dtype=int32),\n", + " array([[[ 78, 111]],\n", + " \n", + " [[ 79, 110]],\n", + " \n", + " [[ 80, 111]],\n", + " \n", + " [[ 79, 112]]], dtype=int32),\n", + " array([[[181, 110]],\n", + " \n", + " [[182, 109]],\n", + " \n", + " [[183, 110]],\n", + " \n", + " [[182, 111]]], dtype=int32),\n", + " array([[[ 79, 110]],\n", + " \n", + " [[ 80, 109]],\n", + " \n", + " [[ 81, 110]],\n", + " \n", + " [[ 80, 111]]], dtype=int32),\n", + " array([[[180, 109]],\n", + " \n", + " [[181, 108]],\n", + " \n", + " [[182, 109]],\n", + " \n", + " [[181, 110]]], dtype=int32),\n", + " array([[[157, 109]],\n", + " \n", + " [[156, 110]],\n", + " \n", + " [[156, 111]],\n", + " \n", + " [[157, 112]],\n", + " \n", + " [[157, 114]],\n", + " \n", + " [[158, 114]],\n", + " \n", + " [[158, 109]]], dtype=int32),\n", + " array([[[ 80, 109]],\n", + " \n", + " [[ 81, 108]],\n", + " \n", + " [[ 82, 109]],\n", + " \n", + " [[ 81, 110]]], dtype=int32),\n", + " array([[[179, 108]],\n", + " \n", + " [[180, 107]],\n", + " \n", + " [[181, 108]],\n", + " \n", + " [[180, 109]]], dtype=int32),\n", + " array([[[ 99, 107]],\n", + " \n", + " [[100, 108]],\n", + " \n", + " [[100, 111]],\n", + " \n", + " [[ 97, 114]],\n", + " \n", + " [[ 95, 114]],\n", + " \n", + " [[ 94, 113]],\n", + " \n", + " [[ 94, 112]]], dtype=int32),\n", + " array([[[ 81, 108]],\n", + " \n", + " [[ 82, 107]],\n", + " \n", + " [[ 83, 108]],\n", + " \n", + " [[ 82, 109]]], dtype=int32),\n", + " array([[[178, 107]],\n", + " \n", + " [[179, 106]],\n", + " \n", + " [[180, 107]],\n", + " \n", + " [[179, 108]]], dtype=int32),\n", + " array([[[176, 106]],\n", + " \n", + " [[177, 105]],\n", + " \n", + " [[178, 106]],\n", + " \n", + " [[177, 107]]], dtype=int32),\n", + " array([[[175, 105]],\n", + " \n", + " [[176, 104]],\n", + " \n", + " [[177, 105]],\n", + " \n", + " [[176, 106]]], dtype=int32),\n", + " array([[[173, 104]],\n", + " \n", + " [[174, 103]],\n", + " \n", + " [[175, 103]],\n", + " \n", + " [[176, 104]],\n", + " \n", + " [[175, 105]],\n", + " \n", + " [[174, 105]]], dtype=int32),\n", + " array([[[162, 104]],\n", + " \n", + " [[163, 103]],\n", + " \n", + " [[170, 103]],\n", + " \n", + " [[172, 105]],\n", + " \n", + " [[173, 105]],\n", + " \n", + " [[174, 106]],\n", + " \n", + " [[175, 106]],\n", + " \n", + " [[182, 113]],\n", + " \n", + " [[182, 114]],\n", + " \n", + " [[183, 115]],\n", + " \n", + " [[183, 121]],\n", + " \n", + " [[182, 122]],\n", + " \n", + " [[179, 119]],\n", + " \n", + " [[179, 118]],\n", + " \n", + " [[177, 116]],\n", + " \n", + " [[177, 115]],\n", + " \n", + " [[177, 116]],\n", + " \n", + " [[176, 117]],\n", + " \n", + " [[176, 122]],\n", + " \n", + " [[177, 123]],\n", + " \n", + " [[180, 123]],\n", + " \n", + " [[181, 124]],\n", + " \n", + " [[181, 126]],\n", + " \n", + " [[179, 128]],\n", + " \n", + " [[173, 128]],\n", + " \n", + " [[172, 127]],\n", + " \n", + " [[171, 127]],\n", + " \n", + " [[170, 126]],\n", + " \n", + " [[169, 126]],\n", + " \n", + " [[169, 127]],\n", + " \n", + " [[170, 128]],\n", + " \n", + " [[170, 130]],\n", + " \n", + " [[169, 131]],\n", + " \n", + " [[168, 130]],\n", + " \n", + " [[168, 129]],\n", + " \n", + " [[167, 128]],\n", + " \n", + " [[167, 127]],\n", + " \n", + " [[162, 122]],\n", + " \n", + " [[163, 123]],\n", + " \n", + " [[163, 124]],\n", + " \n", + " [[164, 125]],\n", + " \n", + " [[164, 126]],\n", + " \n", + " [[165, 127]],\n", + " \n", + " [[165, 130]],\n", + " \n", + " [[164, 131]],\n", + " \n", + " [[158, 131]],\n", + " \n", + " [[157, 130]],\n", + " \n", + " [[156, 130]],\n", + " \n", + " [[155, 129]],\n", + " \n", + " [[154, 129]],\n", + " \n", + " [[150, 125]],\n", + " \n", + " [[150, 124]],\n", + " \n", + " [[149, 123]],\n", + " \n", + " [[149, 120]],\n", + " \n", + " [[148, 119]],\n", + " \n", + " [[148, 111]],\n", + " \n", + " [[149, 110]],\n", + " \n", + " [[149, 109]],\n", + " \n", + " [[152, 106]],\n", + " \n", + " [[153, 106]],\n", + " \n", + " [[155, 104]]], dtype=int32),\n", + " array([[[171, 103]],\n", + " \n", + " [[172, 102]],\n", + " \n", + " [[173, 103]],\n", + " \n", + " [[172, 104]]], dtype=int32),\n", + " array([[[ 87, 103]],\n", + " \n", + " [[ 88, 102]],\n", + " \n", + " [[ 89, 103]],\n", + " \n", + " [[ 88, 104]]], dtype=int32),\n", + " array([[[167, 102]],\n", + " \n", + " [[168, 101]],\n", + " \n", + " [[169, 101]],\n", + " \n", + " [[170, 102]],\n", + " \n", + " [[169, 103]],\n", + " \n", + " [[168, 103]]], dtype=int32),\n", + " array([[[157, 102]],\n", + " \n", + " [[158, 101]],\n", + " \n", + " [[160, 101]],\n", + " \n", + " [[161, 102]],\n", + " \n", + " [[160, 103]],\n", + " \n", + " [[158, 103]]], dtype=int32),\n", + " array([[[118, 101]],\n", + " \n", + " [[119, 100]],\n", + " \n", + " [[120, 100]],\n", + " \n", + " [[123, 103]],\n", + " \n", + " [[123, 104]],\n", + " \n", + " [[124, 105]],\n", + " \n", + " [[124, 106]],\n", + " \n", + " [[125, 107]],\n", + " \n", + " [[123, 109]],\n", + " \n", + " [[115, 109]],\n", + " \n", + " [[114, 108]],\n", + " \n", + " [[115, 107]],\n", + " \n", + " [[115, 106]],\n", + " \n", + " [[116, 105]],\n", + " \n", + " [[116, 104]],\n", + " \n", + " [[118, 102]]], dtype=int32),\n", + " array([[[ 97, 101]],\n", + " \n", + " [[ 98, 100]],\n", + " \n", + " [[ 99, 101]],\n", + " \n", + " [[ 99, 104]],\n", + " \n", + " [[ 98, 105]],\n", + " \n", + " [[ 98, 106]],\n", + " \n", + " [[ 96, 108]],\n", + " \n", + " [[ 95, 108]],\n", + " \n", + " [[ 92, 111]],\n", + " \n", + " [[ 92, 112]],\n", + " \n", + " [[ 91, 113]],\n", + " \n", + " [[ 89, 113]],\n", + " \n", + " [[ 92, 113]],\n", + " \n", + " [[ 93, 114]],\n", + " \n", + " [[ 95, 114]],\n", + " \n", + " [[ 96, 115]],\n", + " \n", + " [[101, 115]],\n", + " \n", + " [[102, 114]],\n", + " \n", + " [[104, 114]],\n", + " \n", + " [[105, 113]],\n", + " \n", + " [[106, 113]],\n", + " \n", + " [[107, 112]],\n", + " \n", + " [[109, 112]],\n", + " \n", + " [[110, 111]],\n", + " \n", + " [[111, 111]],\n", + " \n", + " [[112, 110]],\n", + " \n", + " [[115, 110]],\n", + " \n", + " [[116, 109]],\n", + " \n", + " [[129, 109]],\n", + " \n", + " [[130, 110]],\n", + " \n", + " [[131, 110]],\n", + " \n", + " [[132, 111]],\n", + " \n", + " [[131, 112]],\n", + " \n", + " [[132, 113]],\n", + " \n", + " [[131, 114]],\n", + " \n", + " [[132, 115]],\n", + " \n", + " [[133, 114]],\n", + " \n", + " [[134, 114]],\n", + " \n", + " [[134, 113]],\n", + " \n", + " [[133, 113]],\n", + " \n", + " [[132, 112]],\n", + " \n", + " [[133, 111]],\n", + " \n", + " [[136, 111]],\n", + " \n", + " [[137, 112]],\n", + " \n", + " [[138, 112]],\n", + " \n", + " [[140, 114]],\n", + " \n", + " [[138, 116]],\n", + " \n", + " [[137, 116]],\n", + " \n", + " [[135, 118]],\n", + " \n", + " [[134, 118]],\n", + " \n", + " [[133, 119]],\n", + " \n", + " [[132, 119]],\n", + " \n", + " [[131, 120]],\n", + " \n", + " [[130, 120]],\n", + " \n", + " [[128, 122]],\n", + " \n", + " [[127, 122]],\n", + " \n", + " [[126, 123]],\n", + " \n", + " [[125, 123]],\n", + " \n", + " [[124, 124]],\n", + " \n", + " [[123, 124]],\n", + " \n", + " [[122, 125]],\n", + " \n", + " [[121, 125]],\n", + " \n", + " [[120, 126]],\n", + " \n", + " [[118, 126]],\n", + " \n", + " [[117, 127]],\n", + " \n", + " [[110, 127]],\n", + " \n", + " [[109, 126]],\n", + " \n", + " [[106, 126]],\n", + " \n", + " [[105, 125]],\n", + " \n", + " [[104, 125]],\n", + " \n", + " [[103, 124]],\n", + " \n", + " [[102, 124]],\n", + " \n", + " [[100, 122]],\n", + " \n", + " [[ 97, 122]],\n", + " \n", + " [[ 96, 121]],\n", + " \n", + " [[ 95, 121]],\n", + " \n", + " [[ 94, 122]],\n", + " \n", + " [[ 93, 122]],\n", + " \n", + " [[ 92, 121]],\n", + " \n", + " [[ 92, 120]],\n", + " \n", + " [[ 93, 119]],\n", + " \n", + " [[ 92, 118]],\n", + " \n", + " [[ 91, 118]],\n", + " \n", + " [[ 91, 119]],\n", + " \n", + " [[ 90, 120]],\n", + " \n", + " [[ 90, 121]],\n", + " \n", + " [[ 89, 122]],\n", + " \n", + " [[ 88, 122]],\n", + " \n", + " [[ 87, 123]],\n", + " \n", + " [[ 86, 123]],\n", + " \n", + " [[ 85, 124]],\n", + " \n", + " [[ 84, 124]],\n", + " \n", + " [[ 83, 125]],\n", + " \n", + " [[ 82, 125]],\n", + " \n", + " [[ 81, 126]],\n", + " \n", + " [[ 80, 126]],\n", + " \n", + " [[ 79, 127]],\n", + " \n", + " [[ 78, 127]],\n", + " \n", + " [[ 77, 128]],\n", + " \n", + " [[ 76, 128]],\n", + " \n", + " [[ 75, 129]],\n", + " \n", + " [[ 67, 129]],\n", + " \n", + " [[ 66, 128]],\n", + " \n", + " [[ 66, 124]],\n", + " \n", + " [[ 67, 123]],\n", + " \n", + " [[ 67, 122]],\n", + " \n", + " [[ 68, 121]],\n", + " \n", + " [[ 66, 123]],\n", + " \n", + " [[ 65, 123]],\n", + " \n", + " [[ 64, 124]],\n", + " \n", + " [[ 63, 124]],\n", + " \n", + " [[ 62, 125]],\n", + " \n", + " [[ 61, 125]],\n", + " \n", + " [[ 60, 124]],\n", + " \n", + " [[ 62, 122]],\n", + " \n", + " [[ 63, 122]],\n", + " \n", + " [[ 64, 121]],\n", + " \n", + " [[ 63, 122]],\n", + " \n", + " [[ 62, 121]],\n", + " \n", + " [[ 62, 120]],\n", + " \n", + " [[ 63, 119]],\n", + " \n", + " [[ 63, 118]],\n", + " \n", + " [[ 62, 117]],\n", + " \n", + " [[ 63, 116]],\n", + " \n", + " [[ 64, 116]],\n", + " \n", + " [[ 65, 115]],\n", + " \n", + " [[ 66, 115]],\n", + " \n", + " [[ 67, 114]],\n", + " \n", + " [[ 72, 114]],\n", + " \n", + " [[ 73, 113]],\n", + " \n", + " [[ 74, 113]],\n", + " \n", + " [[ 75, 114]],\n", + " \n", + " [[ 77, 114]],\n", + " \n", + " [[ 78, 113]],\n", + " \n", + " [[ 81, 113]],\n", + " \n", + " [[ 82, 112]],\n", + " \n", + " [[ 86, 112]],\n", + " \n", + " [[ 85, 111]],\n", + " \n", + " [[ 91, 105]],\n", + " \n", + " [[ 92, 105]],\n", + " \n", + " [[ 94, 103]],\n", + " \n", + " [[ 95, 103]],\n", + " \n", + " [[ 96, 102]],\n", + " \n", + " [[ 97, 102]]], dtype=int32),\n", + " array([[[ 98, 99]],\n", + " \n", + " [[ 99, 98]],\n", + " \n", + " [[100, 99]],\n", + " \n", + " [[ 99, 100]]], dtype=int32),\n", + " array([[[164, 98]],\n", + " \n", + " [[165, 97]],\n", + " \n", + " [[166, 98]],\n", + " \n", + " [[166, 101]],\n", + " \n", + " [[165, 102]],\n", + " \n", + " [[164, 101]]], dtype=int32),\n", + " array([[[96, 98]],\n", + " \n", + " [[97, 97]],\n", + " \n", + " [[98, 97]],\n", + " \n", + " [[99, 98]],\n", + " \n", + " [[98, 99]],\n", + " \n", + " [[97, 99]]], dtype=int32),\n", + " array([[[91, 97]],\n", + " \n", + " [[92, 96]],\n", + " \n", + " [[93, 97]],\n", + " \n", + " [[92, 98]]], dtype=int32),\n", + " array([[[ 79, 97]],\n", + " \n", + " [[ 80, 96]],\n", + " \n", + " [[ 81, 97]],\n", + " \n", + " [[ 81, 99]],\n", + " \n", + " [[ 80, 100]],\n", + " \n", + " [[ 80, 101]],\n", + " \n", + " [[ 78, 103]],\n", + " \n", + " [[ 76, 101]],\n", + " \n", + " [[ 76, 98]],\n", + " \n", + " [[ 77, 97]]], dtype=int32),\n", + " array([[[101, 96]],\n", + " \n", + " [[102, 95]],\n", + " \n", + " [[105, 95]],\n", + " \n", + " [[107, 97]],\n", + " \n", + " [[105, 99]],\n", + " \n", + " [[104, 99]],\n", + " \n", + " [[103, 98]],\n", + " \n", + " [[102, 98]],\n", + " \n", + " [[101, 97]]], dtype=int32),\n", + " array([[[138, 94]],\n", + " \n", + " [[139, 93]],\n", + " \n", + " [[140, 93]],\n", + " \n", + " [[141, 94]],\n", + " \n", + " [[141, 95]],\n", + " \n", + " [[142, 96]],\n", + " \n", + " [[142, 97]],\n", + " \n", + " [[144, 99]],\n", + " \n", + " [[144, 101]],\n", + " \n", + " [[145, 102]],\n", + " \n", + " [[145, 104]],\n", + " \n", + " [[146, 105]],\n", + " \n", + " [[146, 106]],\n", + " \n", + " [[142, 110]],\n", + " \n", + " [[140, 110]],\n", + " \n", + " [[139, 111]],\n", + " \n", + " [[137, 109]],\n", + " \n", + " [[137, 106]],\n", + " \n", + " [[136, 105]],\n", + " \n", + " [[136, 102]],\n", + " \n", + " [[137, 101]],\n", + " \n", + " [[137, 97]],\n", + " \n", + " [[138, 96]]], dtype=int32),\n", + " array([[[120, 93]],\n", + " \n", + " [[121, 94]],\n", + " \n", + " [[121, 95]],\n", + " \n", + " [[118, 98]],\n", + " \n", + " [[118, 99]],\n", + " \n", + " [[116, 101]],\n", + " \n", + " [[116, 102]],\n", + " \n", + " [[114, 104]],\n", + " \n", + " [[114, 105]],\n", + " \n", + " [[112, 107]],\n", + " \n", + " [[112, 108]],\n", + " \n", + " [[111, 109]],\n", + " \n", + " [[111, 110]],\n", + " \n", + " [[110, 111]],\n", + " \n", + " [[109, 111]],\n", + " \n", + " [[108, 112]],\n", + " \n", + " [[107, 112]],\n", + " \n", + " [[106, 111]],\n", + " \n", + " [[106, 110]],\n", + " \n", + " [[107, 109]],\n", + " \n", + " [[107, 108]],\n", + " \n", + " [[108, 107]],\n", + " \n", + " [[108, 106]],\n", + " \n", + " [[107, 106]],\n", + " \n", + " [[106, 107]],\n", + " \n", + " [[106, 108]],\n", + " \n", + " [[105, 109]],\n", + " \n", + " [[104, 108]],\n", + " \n", + " [[103, 108]],\n", + " \n", + " [[104, 109]],\n", + " \n", + " [[104, 113]],\n", + " \n", + " [[103, 114]],\n", + " \n", + " [[100, 114]],\n", + " \n", + " [[ 99, 113]],\n", + " \n", + " [[100, 112]],\n", + " \n", + " [[100, 106]],\n", + " \n", + " [[ 99, 105]],\n", + " \n", + " [[100, 104]],\n", + " \n", + " [[100, 102]],\n", + " \n", + " [[ 99, 101]],\n", + " \n", + " [[ 99, 100]],\n", + " \n", + " [[100, 99]],\n", + " \n", + " [[101, 99]],\n", + " \n", + " [[103, 101]],\n", + " \n", + " [[104, 101]],\n", + " \n", + " [[105, 102]],\n", + " \n", + " [[108, 102]],\n", + " \n", + " [[109, 101]],\n", + " \n", + " [[110, 101]],\n", + " \n", + " [[112, 99]],\n", + " \n", + " [[113, 99]],\n", + " \n", + " [[115, 97]],\n", + " \n", + " [[116, 97]]], dtype=int32),\n", + " array([[[97, 93]],\n", + " \n", + " [[98, 92]],\n", + " \n", + " [[99, 93]],\n", + " \n", + " [[98, 94]]], dtype=int32),\n", + " array([[[ 98, 92]],\n", + " \n", + " [[ 99, 91]],\n", + " \n", + " [[100, 91]],\n", + " \n", + " [[101, 92]],\n", + " \n", + " [[100, 93]],\n", + " \n", + " [[ 99, 93]]], dtype=int32),\n", + " array([[[95, 91]],\n", + " \n", + " [[96, 90]],\n", + " \n", + " [[97, 91]],\n", + " \n", + " [[97, 92]],\n", + " \n", + " [[96, 93]],\n", + " \n", + " [[95, 92]]], dtype=int32),\n", + " array([[[186, 89]],\n", + " \n", + " [[185, 90]],\n", + " \n", + " [[185, 91]],\n", + " \n", + " [[184, 92]],\n", + " \n", + " [[183, 91]],\n", + " \n", + " [[183, 92]],\n", + " \n", + " [[184, 92]],\n", + " \n", + " [[185, 93]],\n", + " \n", + " [[185, 94]],\n", + " \n", + " [[186, 95]]], dtype=int32),\n", + " array([[[139, 89]],\n", + " \n", + " [[140, 88]],\n", + " \n", + " [[141, 89]],\n", + " \n", + " [[140, 90]]], dtype=int32),\n", + " array([[[88, 89]],\n", + " \n", + " [[89, 88]],\n", + " \n", + " [[90, 89]],\n", + " \n", + " [[89, 90]]], dtype=int32),\n", + " array([[[86, 88]],\n", + " \n", + " [[87, 87]],\n", + " \n", + " [[88, 88]],\n", + " \n", + " [[87, 89]]], dtype=int32),\n", + " array([[[96, 87]],\n", + " \n", + " [[97, 86]],\n", + " \n", + " [[98, 87]],\n", + " \n", + " [[98, 90]],\n", + " \n", + " [[97, 91]],\n", + " \n", + " [[96, 90]]], dtype=int32),\n", + " array([[[87, 87]],\n", + " \n", + " [[88, 86]],\n", + " \n", + " [[89, 87]],\n", + " \n", + " [[88, 88]]], dtype=int32),\n", + " array([[[185, 86]],\n", + " \n", + " [[185, 87]],\n", + " \n", + " [[186, 87]],\n", + " \n", + " [[186, 86]]], dtype=int32),\n", + " array([[[90, 85]],\n", + " \n", + " [[91, 84]],\n", + " \n", + " [[94, 84]],\n", + " \n", + " [[95, 85]],\n", + " \n", + " [[95, 87]],\n", + " \n", + " [[94, 88]],\n", + " \n", + " [[93, 88]]], dtype=int32),\n", + " array([[[91, 83]],\n", + " \n", + " [[92, 82]],\n", + " \n", + " [[93, 82]],\n", + " \n", + " [[94, 83]],\n", + " \n", + " [[93, 84]],\n", + " \n", + " [[92, 84]]], dtype=int32),\n", + " array([[[107, 82]],\n", + " \n", + " [[108, 81]],\n", + " \n", + " [[112, 81]],\n", + " \n", + " [[113, 82]],\n", + " \n", + " [[112, 83]],\n", + " \n", + " [[111, 83]],\n", + " \n", + " [[108, 86]],\n", + " \n", + " [[107, 86]],\n", + " \n", + " [[106, 87]],\n", + " \n", + " [[105, 87]],\n", + " \n", + " [[102, 84]],\n", + " \n", + " [[103, 83]],\n", + " \n", + " [[104, 83]],\n", + " \n", + " [[105, 82]]], dtype=int32),\n", + " array([[[74, 80]],\n", + " \n", + " [[75, 79]],\n", + " \n", + " [[76, 80]],\n", + " \n", + " [[75, 81]]], dtype=int32),\n", + " array([[[71, 80]],\n", + " \n", + " [[72, 79]],\n", + " \n", + " [[73, 80]],\n", + " \n", + " [[72, 81]]], dtype=int32),\n", + " array([[[67, 80]],\n", + " \n", + " [[68, 79]],\n", + " \n", + " [[69, 80]],\n", + " \n", + " [[68, 81]]], dtype=int32),\n", + " array([[[57, 80]]], dtype=int32),\n", + " array([[[185, 79]],\n", + " \n", + " [[185, 80]]], dtype=int32),\n", + " array([[[68, 79]],\n", + " \n", + " [[69, 78]],\n", + " \n", + " [[70, 79]],\n", + " \n", + " [[69, 80]]], dtype=int32),\n", + " array([[[73, 78]],\n", + " \n", + " [[74, 77]],\n", + " \n", + " [[75, 78]],\n", + " \n", + " [[75, 79]],\n", + " \n", + " [[74, 80]],\n", + " \n", + " [[73, 79]]], dtype=int32),\n", + " array([[[71, 76]],\n", + " \n", + " [[72, 77]],\n", + " \n", + " [[72, 78]],\n", + " \n", + " [[71, 79]],\n", + " \n", + " [[70, 79]],\n", + " \n", + " [[69, 78]]], dtype=int32),\n", + " array([[[134, 76]],\n", + " \n", + " [[135, 75]],\n", + " \n", + " [[136, 76]],\n", + " \n", + " [[135, 77]]], dtype=int32),\n", + " array([[[72, 76]],\n", + " \n", + " [[73, 75]],\n", + " \n", + " [[74, 76]],\n", + " \n", + " [[74, 77]],\n", + " \n", + " [[73, 78]],\n", + " \n", + " [[72, 77]]], dtype=int32),\n", + " array([[[71, 75]],\n", + " \n", + " [[72, 74]],\n", + " \n", + " [[73, 75]],\n", + " \n", + " [[72, 76]]], dtype=int32),\n", + " array([[[135, 74]],\n", + " \n", + " [[136, 73]],\n", + " \n", + " [[137, 74]],\n", + " \n", + " [[137, 75]],\n", + " \n", + " [[136, 76]],\n", + " \n", + " [[135, 75]]], dtype=int32),\n", + " array([[[136, 73]],\n", + " \n", + " [[137, 72]],\n", + " \n", + " [[138, 73]],\n", + " \n", + " [[137, 74]]], dtype=int32),\n", + " array([[[137, 72]],\n", + " \n", + " [[138, 71]],\n", + " \n", + " [[139, 72]],\n", + " \n", + " [[138, 73]]], dtype=int32),\n", + " array([[[55, 72]],\n", + " \n", + " [[55, 73]]], dtype=int32),\n", + " array([[[168, 71]],\n", + " \n", + " [[170, 73]],\n", + " \n", + " [[170, 74]],\n", + " \n", + " [[171, 75]],\n", + " \n", + " [[171, 73]],\n", + " \n", + " [[170, 72]],\n", + " \n", + " [[170, 71]]], dtype=int32),\n", + " array([[[80, 69]]], dtype=int32),\n", + " array([[[54, 67]],\n", + " \n", + " [[54, 69]]], dtype=int32),\n", + " array([[[129, 65]],\n", + " \n", + " [[130, 64]],\n", + " \n", + " [[131, 65]],\n", + " \n", + " [[132, 64]],\n", + " \n", + " [[133, 64]],\n", + " \n", + " [[134, 65]],\n", + " \n", + " [[134, 70]],\n", + " \n", + " [[133, 71]],\n", + " \n", + " [[132, 71]],\n", + " \n", + " [[132, 75]],\n", + " \n", + " [[130, 77]],\n", + " \n", + " [[130, 78]],\n", + " \n", + " [[129, 79]],\n", + " \n", + " [[128, 79]],\n", + " \n", + " [[127, 78]],\n", + " \n", + " [[128, 77]],\n", + " \n", + " [[127, 76]],\n", + " \n", + " [[129, 74]],\n", + " \n", + " [[128, 73]],\n", + " \n", + " [[128, 70]],\n", + " \n", + " [[129, 69]],\n", + " \n", + " [[128, 69]],\n", + " \n", + " [[127, 68]],\n", + " \n", + " [[129, 66]]], dtype=int32),\n", + " array([[[61, 65]],\n", + " \n", + " [[62, 64]],\n", + " \n", + " [[63, 64]],\n", + " \n", + " [[64, 65]],\n", + " \n", + " [[64, 66]],\n", + " \n", + " [[63, 67]],\n", + " \n", + " [[62, 67]],\n", + " \n", + " [[61, 66]]], dtype=int32),\n", + " array([[[154, 63]]], dtype=int32),\n", + " array([[[150, 63]],\n", + " \n", + " [[151, 63]]], dtype=int32),\n", + " array([[[51, 62]],\n", + " \n", + " [[52, 62]],\n", + " \n", + " [[53, 63]],\n", + " \n", + " [[53, 64]],\n", + " \n", + " [[53, 63]],\n", + " \n", + " [[52, 62]]], dtype=int32),\n", + " array([[[159, 59]],\n", + " \n", + " [[158, 60]],\n", + " \n", + " [[159, 60]]], dtype=int32),\n", + " array([[[104, 58]],\n", + " \n", + " [[105, 57]],\n", + " \n", + " [[106, 58]],\n", + " \n", + " [[105, 59]]], dtype=int32),\n", + " array([[[87, 58]]], dtype=int32),\n", + " array([[[46, 58]],\n", + " \n", + " [[46, 61]],\n", + " \n", + " [[47, 61]],\n", + " \n", + " [[48, 62]],\n", + " \n", + " [[48, 63]],\n", + " \n", + " [[48, 62]],\n", + " \n", + " [[49, 61]],\n", + " \n", + " [[48, 60]],\n", + " \n", + " [[48, 58]]], dtype=int32),\n", + " array([[[150, 56]],\n", + " \n", + " [[151, 55]],\n", + " \n", + " [[152, 56]],\n", + " \n", + " [[151, 57]]], dtype=int32),\n", + " array([[[102, 55]],\n", + " \n", + " [[100, 57]],\n", + " \n", + " [[ 99, 57]],\n", + " \n", + " [[ 99, 58]],\n", + " \n", + " [[ 95, 62]],\n", + " \n", + " [[ 95, 63]],\n", + " \n", + " [[ 93, 65]],\n", + " \n", + " [[ 93, 66]],\n", + " \n", + " [[ 92, 67]],\n", + " \n", + " [[ 92, 68]],\n", + " \n", + " [[ 91, 69]],\n", + " \n", + " [[ 91, 70]],\n", + " \n", + " [[ 90, 71]],\n", + " \n", + " [[ 90, 74]],\n", + " \n", + " [[ 90, 73]],\n", + " \n", + " [[ 93, 70]],\n", + " \n", + " [[ 93, 69]],\n", + " \n", + " [[ 95, 67]],\n", + " \n", + " [[ 95, 66]],\n", + " \n", + " [[102, 59]],\n", + " \n", + " [[103, 60]],\n", + " \n", + " [[107, 60]],\n", + " \n", + " [[108, 61]],\n", + " \n", + " [[108, 62]],\n", + " \n", + " [[109, 63]],\n", + " \n", + " [[109, 64]],\n", + " \n", + " [[110, 65]],\n", + " \n", + " [[110, 67]],\n", + " \n", + " [[111, 67]],\n", + " \n", + " [[110, 66]],\n", + " \n", + " [[110, 65]],\n", + " \n", + " [[111, 64]],\n", + " \n", + " [[111, 63]],\n", + " \n", + " [[110, 62]],\n", + " \n", + " [[110, 60]],\n", + " \n", + " [[109, 59]],\n", + " \n", + " [[109, 57]],\n", + " \n", + " [[108, 56]],\n", + " \n", + " [[106, 56]],\n", + " \n", + " [[105, 57]],\n", + " \n", + " [[103, 57]],\n", + " \n", + " [[102, 56]]], dtype=int32),\n", + " array([[[42, 55]],\n", + " \n", + " [[43, 56]],\n", + " \n", + " [[43, 57]],\n", + " \n", + " [[44, 57]],\n", + " \n", + " [[44, 56]],\n", + " \n", + " [[43, 56]]], dtype=int32),\n", + " array([[[119, 52]],\n", + " \n", + " [[119, 54]],\n", + " \n", + " [[120, 55]],\n", + " \n", + " [[120, 60]],\n", + " \n", + " [[119, 61]],\n", + " \n", + " [[119, 64]],\n", + " \n", + " [[118, 65]],\n", + " \n", + " [[118, 66]],\n", + " \n", + " [[116, 68]],\n", + " \n", + " [[116, 69]],\n", + " \n", + " [[115, 70]],\n", + " \n", + " [[118, 67]],\n", + " \n", + " [[118, 66]],\n", + " \n", + " [[120, 64]],\n", + " \n", + " [[120, 59]],\n", + " \n", + " [[121, 58]],\n", + " \n", + " [[122, 59]],\n", + " \n", + " [[122, 64]],\n", + " \n", + " [[123, 65]],\n", + " \n", + " [[123, 69]],\n", + " \n", + " [[123, 62]],\n", + " \n", + " [[122, 61]],\n", + " \n", + " [[122, 58]],\n", + " \n", + " [[120, 56]],\n", + " \n", + " [[120, 53]]], dtype=int32),\n", + " array([[[43, 50]],\n", + " \n", + " [[44, 49]],\n", + " \n", + " [[45, 50]],\n", + " \n", + " [[44, 51]]], dtype=int32),\n", + " array([[[160, 46]],\n", + " \n", + " [[161, 47]],\n", + " \n", + " [[161, 49]],\n", + " \n", + " [[160, 50]],\n", + " \n", + " [[158, 48]]], dtype=int32),\n", + " array([[[162, 42]],\n", + " \n", + " [[161, 43]],\n", + " \n", + " [[161, 44]],\n", + " \n", + " [[159, 46]],\n", + " \n", + " [[159, 47]],\n", + " \n", + " [[157, 49]],\n", + " \n", + " [[157, 50]],\n", + " \n", + " [[154, 53]],\n", + " \n", + " [[155, 53]],\n", + " \n", + " [[156, 52]],\n", + " \n", + " [[157, 52]],\n", + " \n", + " [[157, 49]],\n", + " \n", + " [[158, 48]],\n", + " \n", + " [[159, 49]],\n", + " \n", + " [[159, 50]],\n", + " \n", + " [[160, 51]],\n", + " \n", + " [[160, 52]],\n", + " \n", + " [[161, 53]],\n", + " \n", + " [[160, 54]],\n", + " \n", + " [[162, 54]],\n", + " \n", + " [[160, 52]],\n", + " \n", + " [[160, 51]],\n", + " \n", + " [[163, 48]],\n", + " \n", + " [[163, 45]],\n", + " \n", + " [[162, 44]]], dtype=int32),\n", + " array([[[157, 42]],\n", + " \n", + " [[157, 43]],\n", + " \n", + " [[156, 44]],\n", + " \n", + " ...,\n", + " \n", + " [[158, 44]],\n", + " \n", + " [[158, 43]],\n", + " \n", + " [[159, 42]]], dtype=int32),\n", + " array([[[64, 42]],\n", + " \n", + " [[65, 41]],\n", + " \n", + " [[66, 42]],\n", + " \n", + " [[65, 43]]], dtype=int32),\n", + " array([[[158, 40]]], dtype=int32),\n", + " array([[[148, 38]],\n", + " \n", + " [[149, 38]],\n", + " \n", + " [[150, 39]],\n", + " \n", + " [[150, 40]],\n", + " \n", + " [[149, 41]],\n", + " \n", + " [[147, 41]],\n", + " \n", + " [[146, 40]]], dtype=int32),\n", + " array([[[142, 39]],\n", + " \n", + " [[143, 38]],\n", + " \n", + " [[144, 39]],\n", + " \n", + " [[144, 41]],\n", + " \n", + " [[143, 42]],\n", + " \n", + " [[142, 41]]], dtype=int32),\n", + " array([[[47, 39]],\n", + " \n", + " [[48, 38]],\n", + " \n", + " [[49, 38]],\n", + " \n", + " [[50, 39]],\n", + " \n", + " [[49, 40]],\n", + " \n", + " [[48, 40]]], dtype=int32),\n", + " array([[[39, 39]],\n", + " \n", + " [[40, 40]],\n", + " \n", + " [[40, 41]],\n", + " \n", + " [[41, 42]],\n", + " \n", + " [[41, 45]],\n", + " \n", + " [[40, 46]],\n", + " \n", + " [[39, 45]],\n", + " \n", + " [[39, 44]],\n", + " \n", + " [[38, 43]],\n", + " \n", + " [[39, 44]],\n", + " \n", + " [[39, 46]],\n", + " \n", + " [[38, 47]],\n", + " \n", + " [[38, 48]],\n", + " \n", + " [[40, 48]],\n", + " \n", + " [[40, 46]],\n", + " \n", + " [[41, 45]],\n", + " \n", + " [[42, 46]],\n", + " \n", + " [[42, 47]],\n", + " \n", + " [[43, 47]],\n", + " \n", + " [[44, 48]],\n", + " \n", + " [[43, 49]],\n", + " \n", + " [[43, 50]],\n", + " \n", + " [[41, 52]],\n", + " \n", + " [[42, 51]],\n", + " \n", + " [[43, 52]],\n", + " \n", + " [[44, 51]],\n", + " \n", + " [[45, 51]],\n", + " \n", + " [[48, 54]],\n", + " \n", + " [[48, 55]],\n", + " \n", + " [[54, 61]],\n", + " \n", + " [[56, 61]],\n", + " \n", + " [[58, 63]],\n", + " \n", + " [[58, 64]],\n", + " \n", + " [[57, 65]],\n", + " \n", + " [[56, 65]],\n", + " \n", + " [[55, 64]],\n", + " \n", + " [[55, 65]],\n", + " \n", + " [[56, 66]],\n", + " \n", + " [[56, 67]],\n", + " \n", + " [[57, 68]],\n", + " \n", + " [[57, 70]],\n", + " \n", + " [[58, 71]],\n", + " \n", + " [[58, 75]],\n", + " \n", + " [[59, 74]],\n", + " \n", + " [[60, 75]],\n", + " \n", + " [[60, 76]],\n", + " \n", + " [[59, 77]],\n", + " \n", + " [[59, 79]],\n", + " \n", + " [[60, 80]],\n", + " \n", + " [[59, 81]],\n", + " \n", + " [[60, 80]],\n", + " \n", + " [[60, 78]],\n", + " \n", + " [[61, 77]],\n", + " \n", + " [[61, 74]],\n", + " \n", + " [[62, 73]],\n", + " \n", + " [[62, 71]],\n", + " \n", + " [[63, 70]],\n", + " \n", + " [[63, 68]],\n", + " \n", + " [[66, 65]],\n", + " \n", + " [[67, 65]],\n", + " \n", + " [[67, 64]],\n", + " \n", + " [[69, 62]],\n", + " \n", + " [[69, 61]],\n", + " \n", + " [[70, 60]],\n", + " \n", + " [[70, 59]],\n", + " \n", + " [[69, 60]],\n", + " \n", + " [[68, 60]],\n", + " \n", + " [[67, 59]],\n", + " \n", + " [[66, 59]],\n", + " \n", + " [[65, 58]],\n", + " \n", + " [[62, 58]],\n", + " \n", + " [[60, 56]],\n", + " \n", + " [[59, 56]],\n", + " \n", + " [[58, 55]],\n", + " \n", + " [[55, 55]],\n", + " \n", + " [[53, 53]],\n", + " \n", + " [[52, 53]],\n", + " \n", + " [[40, 41]],\n", + " \n", + " [[40, 40]]], dtype=int32),\n", + " array([[[38, 37]]], dtype=int32),\n", + " array([[[48, 36]],\n", + " \n", + " [[49, 35]],\n", + " \n", + " [[50, 35]],\n", + " \n", + " [[51, 36]],\n", + " \n", + " [[50, 37]],\n", + " \n", + " [[49, 37]]], dtype=int32),\n", + " array([[[101, 34]],\n", + " \n", + " [[102, 35]],\n", + " \n", + " [[102, 37]],\n", + " \n", + " [[102, 35]]], dtype=int32),\n", + " array([[[162, 32]],\n", + " \n", + " [[163, 32]]], dtype=int32),\n", + " array([[[146, 32]],\n", + " \n", + " [[147, 31]],\n", + " \n", + " [[148, 32]],\n", + " \n", + " [[147, 33]]], dtype=int32),\n", + " array([[[147, 30]],\n", + " \n", + " [[148, 29]],\n", + " \n", + " [[149, 30]],\n", + " \n", + " [[149, 31]],\n", + " \n", + " [[148, 32]],\n", + " \n", + " [[147, 31]]], dtype=int32),\n", + " array([[[54, 30]],\n", + " \n", + " [[55, 29]],\n", + " \n", + " [[56, 30]],\n", + " \n", + " [[55, 31]]], dtype=int32),\n", + " array([[[148, 29]],\n", + " \n", + " [[149, 28]],\n", + " \n", + " [[150, 29]],\n", + " \n", + " [[149, 30]]], dtype=int32),\n", + " array([[[52, 29]],\n", + " \n", + " [[53, 28]],\n", + " \n", + " [[54, 29]],\n", + " \n", + " [[53, 30]]], dtype=int32),\n", + " array([[[49, 29]],\n", + " \n", + " [[50, 28]],\n", + " \n", + " [[52, 30]],\n", + " \n", + " [[52, 31]],\n", + " \n", + " [[50, 33]],\n", + " \n", + " [[49, 32]]], dtype=int32),\n", + " array([[[51, 28]],\n", + " \n", + " [[52, 27]],\n", + " \n", + " [[53, 28]],\n", + " \n", + " [[52, 29]]], dtype=int32),\n", + " array([[[112, 26]],\n", + " \n", + " [[113, 26]],\n", + " \n", + " [[114, 27]],\n", + " \n", + " [[115, 27]],\n", + " \n", + " [[117, 29]],\n", + " \n", + " [[118, 29]],\n", + " \n", + " [[120, 31]],\n", + " \n", + " [[121, 31]],\n", + " \n", + " [[120, 31]],\n", + " \n", + " [[119, 30]],\n", + " \n", + " [[119, 29]],\n", + " \n", + " [[118, 29]],\n", + " \n", + " [[116, 27]],\n", + " \n", + " [[114, 27]],\n", + " \n", + " [[113, 26]]], dtype=int32),\n", + " array([[[152, 23]],\n", + " \n", + " [[153, 24]],\n", + " \n", + " [[153, 25]],\n", + " \n", + " [[150, 28]],\n", + " \n", + " [[149, 27]],\n", + " \n", + " [[149, 26]]], dtype=int32),\n", + " array([[[42, 24]],\n", + " \n", + " [[43, 24]]], dtype=int32),\n", + " array([[[60, 22]],\n", + " \n", + " [[61, 23]],\n", + " \n", + " [[61, 22]]], dtype=int32),\n", + " array([[[43, 22]],\n", + " \n", + " [[45, 22]],\n", + " \n", + " [[46, 23]],\n", + " \n", + " [[48, 23]],\n", + " \n", + " [[50, 25]],\n", + " \n", + " [[51, 25]],\n", + " \n", + " [[52, 26]],\n", + " \n", + " [[52, 27]],\n", + " \n", + " [[51, 28]],\n", + " \n", + " [[50, 28]],\n", + " \n", + " [[48, 26]],\n", + " \n", + " [[46, 26]],\n", + " \n", + " [[45, 25]],\n", + " \n", + " [[45, 26]],\n", + " \n", + " [[46, 27]],\n", + " \n", + " [[45, 28]],\n", + " \n", + " [[45, 29]],\n", + " \n", + " [[42, 32]],\n", + " \n", + " [[41, 32]],\n", + " \n", + " [[40, 33]],\n", + " \n", + " [[40, 34]],\n", + " \n", + " [[39, 35]],\n", + " \n", + " [[40, 36]],\n", + " \n", + " [[42, 36]],\n", + " \n", + " [[43, 37]],\n", + " \n", + " [[42, 38]],\n", + " \n", + " [[43, 38]],\n", + " \n", + " [[44, 39]],\n", + " \n", + " [[46, 39]],\n", + " \n", + " [[47, 40]],\n", + " \n", + " [[50, 40]],\n", + " \n", + " [[53, 43]],\n", + " \n", + " [[54, 43]],\n", + " \n", + " [[55, 44]],\n", + " \n", + " [[59, 44]],\n", + " \n", + " [[61, 46]],\n", + " \n", + " [[61, 47]],\n", + " \n", + " [[61, 46]],\n", + " \n", + " [[62, 45]],\n", + " \n", + " [[63, 46]],\n", + " \n", + " [[63, 45]],\n", + " \n", + " [[62, 44]],\n", + " \n", + " [[63, 43]],\n", + " \n", + " [[66, 43]],\n", + " \n", + " [[68, 45]],\n", + " \n", + " [[67, 46]],\n", + " \n", + " [[66, 46]],\n", + " \n", + " [[68, 46]],\n", + " \n", + " [[69, 47]],\n", + " \n", + " [[68, 46]],\n", + " \n", + " [[68, 45]],\n", + " \n", + " [[69, 44]],\n", + " \n", + " [[76, 44]],\n", + " \n", + " [[77, 45]],\n", + " \n", + " [[78, 45]],\n", + " \n", + " [[79, 44]],\n", + " \n", + " [[80, 45]],\n", + " \n", + " [[80, 46]],\n", + " \n", + " [[81, 47]],\n", + " \n", + " [[81, 48]],\n", + " \n", + " [[82, 49]],\n", + " \n", + " [[82, 50]],\n", + " \n", + " [[85, 50]],\n", + " \n", + " [[86, 49]],\n", + " \n", + " [[84, 47]],\n", + " \n", + " [[84, 46]],\n", + " \n", + " [[83, 45]],\n", + " \n", + " [[83, 44]],\n", + " \n", + " [[81, 42]],\n", + " \n", + " [[81, 41]],\n", + " \n", + " [[78, 38]],\n", + " \n", + " [[78, 37]],\n", + " \n", + " [[75, 34]],\n", + " \n", + " [[75, 33]],\n", + " \n", + " [[70, 28]],\n", + " \n", + " [[69, 28]],\n", + " \n", + " [[66, 25]],\n", + " \n", + " [[65, 25]],\n", + " \n", + " [[64, 24]],\n", + " \n", + " [[63, 24]],\n", + " \n", + " [[73, 34]],\n", + " \n", + " [[73, 35]],\n", + " \n", + " [[75, 37]],\n", + " \n", + " [[75, 38]],\n", + " \n", + " [[78, 41]],\n", + " \n", + " [[78, 42]],\n", + " \n", + " [[79, 43]],\n", + " \n", + " [[78, 44]],\n", + " \n", + " [[73, 44]],\n", + " \n", + " [[72, 43]],\n", + " \n", + " [[73, 42]],\n", + " \n", + " [[73, 41]],\n", + " \n", + " [[71, 39]],\n", + " \n", + " [[71, 38]],\n", + " \n", + " [[62, 29]],\n", + " \n", + " [[61, 29]],\n", + " \n", + " [[60, 28]],\n", + " \n", + " [[60, 27]],\n", + " \n", + " [[58, 27]],\n", + " \n", + " [[55, 24]],\n", + " \n", + " [[53, 24]],\n", + " \n", + " [[52, 23]],\n", + " \n", + " [[48, 23]],\n", + " \n", + " [[47, 22]]], dtype=int32),\n", + " array([[[78, 21]],\n", + " \n", + " [[80, 21]]], dtype=int32),\n", + " array([[[158, 19]],\n", + " \n", + " [[159, 20]],\n", + " \n", + " [[159, 19]]], dtype=int32),\n", + " array([[[85, 19]],\n", + " \n", + " [[86, 18]],\n", + " \n", + " [[88, 18]],\n", + " \n", + " [[89, 19]],\n", + " \n", + " [[88, 20]],\n", + " \n", + " [[86, 20]]], dtype=int32),\n", + " array([[[156, 17]],\n", + " \n", + " [[156, 18]],\n", + " \n", + " [[149, 25]],\n", + " \n", + " [[148, 25]],\n", + " \n", + " [[148, 27]],\n", + " \n", + " [[147, 28]],\n", + " \n", + " [[146, 27]],\n", + " \n", + " [[144, 29]],\n", + " \n", + " [[144, 30]],\n", + " \n", + " [[143, 31]],\n", + " \n", + " [[143, 32]],\n", + " \n", + " [[142, 33]],\n", + " \n", + " [[142, 34]],\n", + " \n", + " [[141, 35]],\n", + " \n", + " [[141, 36]],\n", + " \n", + " [[139, 38]],\n", + " \n", + " [[139, 39]],\n", + " \n", + " [[138, 40]],\n", + " \n", + " [[138, 41]],\n", + " \n", + " [[137, 42]],\n", + " \n", + " [[137, 44]],\n", + " \n", + " [[136, 45]],\n", + " \n", + " [[136, 47]],\n", + " \n", + " [[140, 47]],\n", + " \n", + " [[140, 46]],\n", + " \n", + " [[141, 45]],\n", + " \n", + " [[144, 45]],\n", + " \n", + " [[145, 44]],\n", + " \n", + " [[147, 44]],\n", + " \n", + " [[149, 42]],\n", + " \n", + " [[149, 41]],\n", + " \n", + " [[150, 40]],\n", + " \n", + " [[151, 40]],\n", + " \n", + " [[152, 39]],\n", + " \n", + " [[153, 39]],\n", + " \n", + " [[151, 39]],\n", + " \n", + " [[150, 38]],\n", + " \n", + " [[151, 37]],\n", + " \n", + " [[152, 37]],\n", + " \n", + " [[153, 36]],\n", + " \n", + " [[154, 36]],\n", + " \n", + " [[155, 35]],\n", + " \n", + " [[157, 35]],\n", + " \n", + " [[158, 34]],\n", + " \n", + " [[159, 34]],\n", + " \n", + " [[160, 33]],\n", + " \n", + " [[160, 31]],\n", + " \n", + " [[159, 30]],\n", + " \n", + " [[159, 28]],\n", + " \n", + " [[158, 27]],\n", + " \n", + " [[158, 26]],\n", + " \n", + " [[157, 25]],\n", + " \n", + " [[157, 24]],\n", + " \n", + " [[156, 23]],\n", + " \n", + " [[156, 21]],\n", + " \n", + " [[156, 22]],\n", + " \n", + " [[154, 24]],\n", + " \n", + " [[153, 24]],\n", + " \n", + " [[152, 23]],\n", + " \n", + " [[152, 22]],\n", + " \n", + " [[156, 18]]], dtype=int32),\n", + " array([[[83, 17]],\n", + " \n", + " [[84, 16]],\n", + " \n", + " [[85, 17]],\n", + " \n", + " [[85, 18]],\n", + " \n", + " [[84, 19]],\n", + " \n", + " [[80, 19]],\n", + " \n", + " [[79, 18]],\n", + " \n", + " [[80, 17]]], dtype=int32),\n", + " array([[[156, 15]]], dtype=int32),\n", + " array([[[49, 15]],\n", + " \n", + " [[50, 14]],\n", + " \n", + " [[52, 14]],\n", + " \n", + " [[53, 15]],\n", + " \n", + " [[52, 16]],\n", + " \n", + " [[50, 16]]], dtype=int32),\n", + " array([[[128, 9]],\n", + " \n", + " [[129, 8]],\n", + " \n", + " [[130, 9]],\n", + " \n", + " [[129, 10]]], dtype=int32),\n", + " array([[[83, 8]],\n", + " \n", + " [[84, 7]],\n", + " \n", + " [[85, 8]],\n", + " \n", + " [[85, 9]],\n", + " \n", + " [[84, 10]],\n", + " \n", + " [[83, 9]]], dtype=int32),\n", + " array([[[122, 6]]], dtype=int32),\n", + " array([[[84, 5]],\n", + " \n", + " [[85, 4]],\n", + " \n", + " [[86, 5]],\n", + " \n", + " [[86, 6]],\n", + " \n", + " [[85, 7]],\n", + " \n", + " [[84, 6]]], dtype=int32),\n", + " array([[[118, 4]],\n", + " \n", + " [[119, 3]],\n", + " \n", + " [[120, 4]],\n", + " \n", + " [[119, 5]]], dtype=int32),\n", + " array([[[48, 4]],\n", + " \n", + " [[48, 7]],\n", + " \n", + " [[49, 6]],\n", + " \n", + " [[49, 4]]], dtype=int32),\n", + " array([[[151, 0]],\n", + " \n", + " [[151, 1]],\n", + " \n", + " [[152, 2]],\n", + " \n", + " [[152, 8]],\n", + " \n", + " [[153, 9]],\n", + " \n", + " [[152, 10]],\n", + " \n", + " [[155, 10]],\n", + " \n", + " [[155, 8]],\n", + " \n", + " [[158, 5]],\n", + " \n", + " [[158, 0]]], dtype=int32),\n", + " array([[[101, 0]],\n", + " \n", + " [[101, 3]],\n", + " \n", + " [[102, 4]],\n", + " \n", + " [[102, 8]],\n", + " \n", + " [[103, 9]],\n", + " \n", + " [[103, 10]],\n", + " \n", + " [[104, 11]],\n", + " \n", + " [[105, 10]],\n", + " \n", + " [[106, 11]],\n", + " \n", + " [[106, 13]],\n", + " \n", + " [[107, 14]],\n", + " \n", + " [[107, 16]],\n", + " \n", + " [[108, 17]],\n", + " \n", + " [[108, 19]],\n", + " \n", + " [[107, 20]],\n", + " \n", + " [[108, 19]],\n", + " \n", + " [[109, 20]],\n", + " \n", + " [[109, 22]],\n", + " \n", + " [[111, 24]],\n", + " \n", + " [[116, 24]],\n", + " \n", + " [[118, 22]],\n", + " \n", + " [[119, 23]],\n", + " \n", + " [[119, 22]],\n", + " \n", + " [[118, 21]],\n", + " \n", + " [[118, 20]],\n", + " \n", + " [[119, 19]],\n", + " \n", + " [[119, 15]],\n", + " \n", + " [[120, 14]],\n", + " \n", + " [[120, 13]],\n", + " \n", + " [[119, 12]],\n", + " \n", + " [[119, 11]],\n", + " \n", + " [[120, 10]],\n", + " \n", + " [[118, 8]],\n", + " \n", + " [[119, 7]],\n", + " \n", + " [[118, 6]],\n", + " \n", + " [[120, 4]],\n", + " \n", + " [[121, 4]],\n", + " \n", + " [[120, 3]],\n", + " \n", + " [[119, 3]],\n", + " \n", + " [[117, 1]],\n", + " \n", + " [[118, 0]],\n", + " \n", + " [[119, 0]],\n", + " \n", + " [[120, 1]],\n", + " \n", + " [[121, 1]],\n", + " \n", + " [[125, 5]],\n", + " \n", + " [[125, 6]],\n", + " \n", + " [[127, 8]],\n", + " \n", + " [[127, 9]],\n", + " \n", + " [[129, 11]],\n", + " \n", + " [[129, 12]],\n", + " \n", + " [[130, 13]],\n", + " \n", + " [[130, 16]],\n", + " \n", + " [[131, 17]],\n", + " \n", + " [[131, 19]],\n", + " \n", + " [[132, 18]],\n", + " \n", + " [[133, 18]],\n", + " \n", + " [[135, 16]],\n", + " \n", + " [[136, 16]],\n", + " \n", + " [[137, 15]],\n", + " \n", + " [[138, 15]],\n", + " \n", + " [[139, 14]],\n", + " \n", + " [[141, 14]],\n", + " \n", + " [[142, 13]],\n", + " \n", + " [[144, 13]],\n", + " \n", + " [[145, 12]],\n", + " \n", + " [[147, 12]],\n", + " \n", + " [[148, 11]],\n", + " \n", + " [[149, 11]],\n", + " \n", + " [[149, 7]],\n", + " \n", + " [[148, 6]],\n", + " \n", + " [[148, 4]],\n", + " \n", + " [[146, 2]],\n", + " \n", + " [[146, 0]],\n", + " \n", + " [[145, 0]],\n", + " \n", + " [[145, 7]],\n", + " \n", + " [[144, 8]],\n", + " \n", + " [[144, 9]],\n", + " \n", + " [[143, 10]],\n", + " \n", + " [[142, 10]],\n", + " \n", + " [[141, 9]],\n", + " \n", + " [[141, 8]],\n", + " \n", + " [[140, 7]],\n", + " \n", + " [[140, 6]],\n", + " \n", + " [[139, 5]],\n", + " \n", + " [[139, 0]],\n", + " \n", + " [[137, 0]],\n", + " \n", + " [[137, 2]],\n", + " \n", + " [[136, 3]],\n", + " \n", + " [[136, 5]],\n", + " \n", + " [[133, 8]],\n", + " \n", + " [[133, 9]],\n", + " \n", + " [[132, 10]],\n", + " \n", + " [[132, 13]],\n", + " \n", + " [[131, 14]],\n", + " \n", + " [[129, 12]],\n", + " \n", + " [[129, 11]],\n", + " \n", + " [[130, 10]],\n", + " \n", + " [[130, 7]],\n", + " \n", + " [[129, 8]],\n", + " \n", + " [[128, 7]],\n", + " \n", + " [[128, 3]],\n", + " \n", + " [[127, 2]],\n", + " \n", + " [[127, 0]],\n", + " \n", + " [[125, 0]],\n", + " \n", + " [[123, 2]],\n", + " \n", + " [[121, 0]],\n", + " \n", + " [[115, 0]],\n", + " \n", + " [[115, 3]],\n", + " \n", + " [[114, 4]],\n", + " \n", + " [[112, 4]],\n", + " \n", + " [[111, 5]],\n", + " \n", + " [[110, 5]],\n", + " \n", + " [[109, 6]],\n", + " \n", + " [[108, 5]],\n", + " \n", + " [[106, 5]],\n", + " \n", + " [[105, 4]],\n", + " \n", + " [[106, 3]],\n", + " \n", + " [[106, 0]]], dtype=int32),\n", + " array([[[ 79, 0]],\n", + " \n", + " [[ 79, 3]],\n", + " \n", + " [[ 78, 4]],\n", + " \n", + " [[ 78, 6]],\n", + " \n", + " [[ 80, 8]],\n", + " \n", + " [[ 79, 9]],\n", + " \n", + " [[ 79, 13]],\n", + " \n", + " [[ 78, 14]],\n", + " \n", + " [[ 78, 15]],\n", + " \n", + " [[ 77, 16]],\n", + " \n", + " [[ 76, 15]],\n", + " \n", + " [[ 76, 13]],\n", + " \n", + " [[ 75, 12]],\n", + " \n", + " [[ 75, 9]],\n", + " \n", + " [[ 74, 8]],\n", + " \n", + " [[ 74, 7]],\n", + " \n", + " [[ 73, 6]],\n", + " \n", + " [[ 73, 4]],\n", + " \n", + " [[ 72, 4]],\n", + " \n", + " [[ 71, 5]],\n", + " \n", + " [[ 71, 6]],\n", + " \n", + " [[ 68, 9]],\n", + " \n", + " [[ 66, 9]],\n", + " \n", + " [[ 67, 10]],\n", + " \n", + " [[ 64, 13]],\n", + " \n", + " [[ 63, 12]],\n", + " \n", + " [[ 63, 11]],\n", + " \n", + " [[ 62, 10]],\n", + " \n", + " [[ 62, 8]],\n", + " \n", + " [[ 61, 7]],\n", + " \n", + " [[ 61, 4]],\n", + " \n", + " [[ 60, 3]],\n", + " \n", + " [[ 60, 2]],\n", + " \n", + " [[ 59, 1]],\n", + " \n", + " [[ 58, 2]],\n", + " \n", + " [[ 55, 2]],\n", + " \n", + " [[ 54, 1]],\n", + " \n", + " [[ 52, 3]],\n", + " \n", + " [[ 52, 9]],\n", + " \n", + " [[ 51, 10]],\n", + " \n", + " [[ 51, 11]],\n", + " \n", + " [[ 50, 12]],\n", + " \n", + " [[ 49, 12]],\n", + " \n", + " [[ 48, 11]],\n", + " \n", + " [[ 47, 11]],\n", + " \n", + " [[ 46, 12]],\n", + " \n", + " [[ 46, 15]],\n", + " \n", + " [[ 44, 17]],\n", + " \n", + " [[ 45, 16]],\n", + " \n", + " [[ 47, 16]],\n", + " \n", + " [[ 48, 15]],\n", + " \n", + " [[ 49, 15]],\n", + " \n", + " [[ 50, 16]],\n", + " \n", + " [[ 53, 16]],\n", + " \n", + " [[ 54, 15]],\n", + " \n", + " [[ 64, 15]],\n", + " \n", + " [[ 65, 16]],\n", + " \n", + " [[ 69, 16]],\n", + " \n", + " [[ 70, 17]],\n", + " \n", + " [[ 77, 17]],\n", + " \n", + " [[ 78, 18]],\n", + " \n", + " [[ 77, 19]],\n", + " \n", + " [[ 67, 19]],\n", + " \n", + " [[ 66, 20]],\n", + " \n", + " [[ 64, 20]],\n", + " \n", + " [[ 71, 20]],\n", + " \n", + " [[ 72, 19]],\n", + " \n", + " [[ 81, 19]],\n", + " \n", + " [[ 82, 20]],\n", + " \n", + " [[ 85, 20]],\n", + " \n", + " [[ 86, 21]],\n", + " \n", + " [[ 87, 21]],\n", + " \n", + " [[ 88, 22]],\n", + " \n", + " [[ 89, 22]],\n", + " \n", + " [[ 91, 24]],\n", + " \n", + " [[ 92, 24]],\n", + " \n", + " [[100, 32]],\n", + " \n", + " [[ 98, 30]],\n", + " \n", + " [[ 98, 29]],\n", + " \n", + " [[ 89, 20]],\n", + " \n", + " [[ 90, 19]],\n", + " \n", + " [[ 91, 19]],\n", + " \n", + " [[ 92, 20]],\n", + " \n", + " [[ 92, 19]],\n", + " \n", + " [[ 91, 18]],\n", + " \n", + " [[ 91, 10]],\n", + " \n", + " [[ 92, 9]],\n", + " \n", + " [[ 92, 6]],\n", + " \n", + " [[ 93, 5]],\n", + " \n", + " [[ 93, 2]],\n", + " \n", + " [[ 94, 1]],\n", + " \n", + " [[ 94, 0]]], dtype=int32),\n", + " array([[[65, 0]],\n", + " \n", + " [[65, 3]],\n", + " \n", + " [[66, 3]],\n", + " \n", + " [[66, 0]]], dtype=int32)],\n", + " array([[[ 1, -1, -1, -1],\n", + " [ 2, 0, -1, -1],\n", + " [ 3, 1, -1, -1],\n", + " ...,\n", + " [255, 253, -1, -1],\n", + " [256, 254, -1, -1],\n", + " [ -1, 255, -1, -1]]], dtype=int32))" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "contours,hierarchy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. Contour Area\n", + "Contour area is given by the function cv2.contourArea() or from moments" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "area = cv2.contourArea(cnt)\n", + "area" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3. Contour Perimeter\n", + "It is also called arc length. It can be found out using cv2.arcLength() function. Second argument specify whether shape is a closed contour (if passed True), or just a curve." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.0" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "perimeter = cv2.arcLength(cnt,True)\n", + "perimeter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4. Contour Approximation\n", + "It approximates a contour shape to another shape with less number of vertices depending upon the precision we specify. It is an implementation of Douglas-Peucker algorithm. Check the wikipedia page for algorithm and demonstration.\n", + "\n", + "To understand this, suppose you are trying to find a square in an image, but due to some problems in the image, you didn’t get a perfect square, but a “bad shape” (As shown in first image below). Now you can use this function to approximate the shape. In this, second argument is called epsilon, which is maximum distance from contour to approximated contour. It is an accuracy parameter. A wise selection of epsilon is needed to get the correct output." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[127, 223]],\n", + "\n", + " [[127, 224]]], dtype=int32)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "epsilon = 0.1*cv2.arcLength(cnt,True)\n", + "approx = cv2.approxPolyDP(cnt,epsilon,True)\n", + "epsilon\n", + "approx" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5. Convex Hull\n", + "Convex Hull will look similar to contour approximation, but it is not (Both may provide same results in some cases). Here, cv2.convexHull() function checks a curve for convexity defects and corrects it. Generally speaking, convex curves are the curves which are always bulged out, or at-least flat. And if it is bulged inside, it is called convexity defects. For example, check the below image of hand. Red line shows the convex hull of hand. The double-sided arrow marks shows the convexity defects, which are the local maximum deviations of hull from contours." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[127, 224]],\n", + "\n", + " [[127, 223]]], dtype=int32)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hull = cv2.convexHull(cnt)\n", + "hull" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 6. Checking Convexity\n", + "There is a function to check if a curve is convex or not, cv2.isContourConvex(). It just return whether True or False. Not a big deal." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "k = cv2.isContourConvex(cnt)\n", + "k" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 7. Bounding Rectangle\n", + "There are two types of bounding rectangles" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 7.a. Straight Bounding Rectangle\n", + "It is a straight rectangle, it doesn’t consider the rotation of the object. So area of the bounding rectangle won’t be minimum. It is found by the function cv2.boundingRect().\n", + "\n", + "Let (x,y) be the top-left coordinate of the rectangle and (w,h) be its width and height." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " ...,\n", + " [ 5, 6, 8, ..., 47, 41, 34],\n", + " [ 5, 6, 8, ..., 47, 41, 35],\n", + " [ 4, 6, 10, ..., 46, 44, 35]], dtype=uint8)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x,y,w,h = cv2.boundingRect(cnt)\n", + "img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)\n", + "x,y,w,h \n", + "img" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 7.b. Rotated Rectangle\n", + "Here, bounding rectangle is drawn with minimum area, so it considers the rotation also. The function used is cv2.minAreaRect(). It returns a Box2D structure which contains following detals - ( top-left corner(x,y), (width, height), angle of rotation ). But to draw this rectangle, we need 4 corners of the rectangle. It is obtained by the function cv2.boxPoints()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((127.0, 223.5), (1.0, 0.0), 90.0)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rect = cv2.minAreaRect(cnt)\n", + "box = cv2.boxPoints(rect)\n", + "box = np.int0(box)\n", + "img = cv2.drawContours(img,[box],0,(0,0,255),2)\n", + "rect\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[127, 223],\n", + " [127, 223],\n", + " [127, 224],\n", + " [127, 224]], dtype=int64)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "box" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " ...,\n", + " [ 5, 6, 8, ..., 47, 41, 34],\n", + " [ 5, 6, 8, ..., 47, 41, 35],\n", + " [ 4, 6, 10, ..., 46, 44, 35]], dtype=uint8)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "img" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 8. Minimum Enclosing Circle\n", + "Next we find the circumcircle of an object using the function cv2.minEnclosingCircle(). It is a circle which completely covers the object with minimum area." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(127, 223)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(x,y),radius = cv2.minEnclosingCircle(cnt)\n", + "center = (int(x),int(y))\n", + "radius = int(radius)\n", + "img = cv2.circle(img,center,radius,(0,255,0),2)\n", + "center\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "radius" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " ...,\n", + " [ 5, 6, 8, ..., 47, 41, 34],\n", + " [ 5, 6, 8, ..., 47, 41, 35],\n", + " [ 4, 6, 10, ..., 46, 44, 35]], dtype=uint8)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(225, 225)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 9. Fitting a Line\n", + "Similarly we can fit a line to a set of points. Below image contains a set of white points. We can approximate a straight line to it." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "rows,cols = img.shape[:2]\n", + "[vx,vy,x,y] = cv2.fitLine(cnt, cv2.DIST_L2,0,0.01,0.01)\n", + "lefty = int((-x*vy/vx) + y)\n", + "righty = int(((cols-x)*vy/vx)+y)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " ...,\n", + " [ 5, 6, 8, ..., 47, 41, 34],\n", + " [ 5, 6, 8, ..., 47, 41, 35],\n", + " [ 4, 6, 10, ..., 46, 44, 35]], dtype=uint8)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img = cv2.line(img,(cols-1,100),(0,100),(0,255,0),2)\n", + "img" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2905421568" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lefty" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-2241978368" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "righty" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " ...,\n", + " [ 5, 6, 8, ..., 47, 41, 34],\n", + " [ 5, 6, 8, ..., 47, 41, 35],\n", + " [ 4, 6, 10, ..., 46, 44, 35]], dtype=uint8)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img = cv2.line(img,(cols-1,100),(0,100),(0,255,0),2)\n", + "img" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " [ 0, 0, 0, ..., 1, 1, 1],\n", + " ...,\n", + " [ 5, 6, 8, ..., 47, 41, 34],\n", + " [ 5, 6, 8, ..., 47, 41, 35],\n", + " [ 4, 6, 10, ..., 46, 44, 35]], dtype=uint8)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}