{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "ncase=1.3;\n", "size=490;\n", "time=12;" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import cv2, imutils\n", "import sys\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from skimage.measure import compare_ssim \n", "from glob import glob\n", "from scipy.spatial import distance\n", "from sklearn.metrics import r2_score\n", "import matplotlib.patches as patches\n", "from PIL import Image" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def find_if_close(cnt1,cnt2):\n", " row1,row2 = cnt1.shape[0],cnt2.shape[0]\n", " for i in range(row1):\n", " for j in range(row2):\n", " dist = np.linalg.norm(cnt1[i]-cnt2[j])\n", " if abs(dist) < 50 :\n", " return True\n", " elif i==row1-1 and j==row2-1:\n", " return False" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUkAAAD8CAYAAAD6+lbaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO29a4xl2XUe9u37qmdXV1c/Znq6ezLT5GgAigIjidDDCgxBtGWREUQHoAwqQkLKExBITEd2Alik9cMI4B9SYlhSgEDyQLRBCYxIhZZNQlEiGHr8yA9PJEoKSZEmZ8ghxeY8+lWP7np01b118qPuvrNq1Xrtc251n0nuBzT63nP2Xnvtffb+9nrscytVVYUZZphhhhlkdB61AjPMMMMMbcaMJGeYYYYZDMxIcoYZZpjBwIwkZ5hhhhkMzEhyhhlmmMHAjCRnmGGGGQycCkmmlH4spfSVlNJLKaWPnEYbM8wwwwwPA2na5yRTSl0AXwXwNwHcAPAnAH6qqqovTbWhGWaYYYaHgNOwJL8PwEtVVX29qqp9AJ8E8N5TaGeGGWaY4dTROwWZVwB8i3y/AeD7eaGU0ocAfAgABoPB9168eHFyr6oqpJTE79TyzZ9pWfqdluVlpoWoXG6xn5Y+JTpEkVIK100pIaWEw8NDDIfDY9ciej2MN8CatFFVFYbDIUajEYbDIaqqQq/Xw+LiIrrd7hS1fLR4VOultN1pyvvmN795u6qqi/z6aZCkpNWJWVlV1fMAngeAq1evVh/+8IfzdVP4aDQCABweHk6udTpvGMR0ouay+TodMFpHQ2SAI3IA4ODgYEIag8EA3W53Upf25TQQkc83JgudTgeHh4eTZ0Xld7tdLCwsYDgc4vbt29jf30ev15v0l47X4eHhRA7/n2+SGXwD1PqWr0vPh+pOr+V+aaiqCgcHB9jY2MD6+jrW19exv7+Py5cv4x3veAeWlpbUupaudSHNn+h89JDX0Wg0Usk/PwuvTW3d8XpUnmb4aO3Ra1JZrS1qaD333HPflPQ/DZK8AeAa+X4VwCteJc0q1EgzT2jrAdGHG32gmm584L22pbYyafOJx4mjCerW9whS0jFbmJRc8vMaDAYYDAbHNgcq6/DwEKPR6Fg9ibw4ODny/vIx5/et+UR1k8plizilNCnX7XYxPz+PXm86S0narDwvZFrESEENDIsoAYTWAkcur807jQ/qtqfViRgGp0GSfwLgmZTS0wC+DeD9AP7zaGXLoqEPToP3QD1IbZdaoFK54XCIg4ODycKq86A9nKZFallm+Tolrmw1ZvdUkketR+ANoqRtSGRF63Ld6BhodTVoBCtZNqPRaDJX5+bm1I2u5BlbG4Q0X/g13u5pzDFPP2+e0HJ5fkSIipeL9m0aYzB1kqyqaphS+jCA3wfQBfAvq6r6S6+eRG500lCC9MiAyyqxIq0dzHIVOKyFy8nEq2/dt1DiQkt1M/jkpODxysPDQxwcHKDT6WAwGCClNHl23W73mMXIrUc+LhHdpXGgY+z1jfaD16F65OeY/41GI4xGI/R6vWMkqcnwnpekk0aa9Ll64QbtWilx0GeoQZuz3jyMEqAlh9bhc5cTcylOw5JEVVW/B+D3SurQweeTo4QgOaYVgK67G2V9B4PB5Hu/32+ki+dC5j6X9N2agFYizdKPutz5ekpp8qwp+Xgk4T13iVQ111WSRevTdulzz+GBTJAA0Ov1Jq72NCx5SQeuRwkepjUJlOkZ0a107lHUsTwlnApJThOai12nw551RkEfRmnsUVos3W4Xc3NzJ+pwnerueKWbAbWY82faZ24hlmSEMxFlK+vBgweTjLDmSlMXmo97vie1QctxUDmahSfpTu9nIs/Xcj8y2VOSnCb4+GuJrBI0IcvTyNzzuVBKavz5W5Ysv295jBytJUmJHEtIzkIkvjNt5BhdJBvruWd8UjSxlussOK+9bG11Op0Tiyvf4+B9stxoiTw0nawYKv/MrUxet9PpoNfrYTAYoN/vo9/vh8MCHrxYeIb3vCKufUaJ+62Fw7iOTdZR1DCJeDKUCGm9OiGHVpJkU+tRct3zzkxjOVFTXxpYWn+aCZMSWU3a184+Rkgzj4vmElLLj56RlCYvJT26QXDrMU9wmhHPJMytPfpd05PKpjErnqyhJJjDJPkIV3TMpGRSHWLllr2W+T0tSHHJJv2JGj1SG95alpJa0tqNuO+tJMkm0NyCSKZTGmz+gKTFxa/X2UkjLrtXl7urHqLHrSL1pTieNubUWuAxSb5w6LEpqy1aNwopueZl7/N5zzzPpFDAtBB9Hk0SdEC9JI5lVUpjqelIyzTpQ9SC5YaPZHFytIIkq6pqfHRnWvBiVRRSRjTLoChxgZqibmxyGu1KCbeqqrC/v4+Dg4OJJcbjfhkS4XC5kjWQv9e1jKlcDdrzyxZuJtAopjHuecFHwh/aJqyNpwfNqoyeSKhj1UlJnAyaxQb0lwjyPe90AEUrSHJaGejTJlmJ/DRYQeiHSZoW8uaUj7JE+xMpk0kjHwHa39+flJEmKXeZNdlVVYUXs5Qp1sIMUl0eb8zHljiyvlqihdavC4vEtNMNWn3uDfHPdWOK04xPavDGmIZOpLgzlRPVrxUkSRE5MC4hSpDWbmXtPrku3UG1oyTWNWunqwPJVSwh4HymUUPTDWx+fh7z8/PY2dnB/v7+JCOc9ZUIhm8ilECBk+coeVY+guzqc2iJg7yoDg4O8ODBg8mbRPT1Ul4+YuGVgC/q0mdzmhsz12UayRutHc1j4DFKvi7qzuWHd4DKQO70aRJkk8Aybyu3FznLVneycGKl/5rKpuj3+6oVKbm6pW12u10sLS2h1+tNjs94oMSpWQ7RM5E0Iy5ZgtRd5QRJSTgnjR48eDD5NxwOkVKaZLk56NEq3m5dwuKbdpPkm1YuqlvUMGlCznyztED7NM1YcessyVKUEGQpUUoWDSBnGaUdvqnVGDm+olmzVmiA3qNn/JomADjyOC0uLmJubg57e3sYDocYDoeT+GTWlRIyv0bJhveFtye5fDRumOtnS5Qn5izZ+dXS7e1t3L9/f9KP+fl59RB4ls0TU00QSRJGz1g2eeb8TSoebsn6aR4a93xosk7LaEt9qovoumyFJXlaiAS1KaTdR7LguEVDLY/ShzdNUqLQrE+r7ehZvWjbmaDm5uawuLiIw8NDPHjwYLIIJNLiG0vpMRdOqFIdLfvueQLD4RDb29u4e/cuNjY2UFUVzpw5g/n5+UmZPAfoXNAIUppv0vEnrawkU4JmRWd9TwtSyIJbe7xsvmb1a9o6e2T5prckpwErS0YfiHcWS4NXzrJCPGhJoGhyqCSrm/thyZbGKP98WqfTmbjc+bqnOz2TGU0yUCtECuJ7feWEne89ePAAW1tb2NjYwN7eHpaXl7GysoLBYKBa6pYF6cWQo1Zn04RLE9BXTC1EdYzEXOtav6X5iIz/z5JkySBqQWeJIOnEtVz9OhOWk6XkakiE6rnlkay8V5bv8NEkUdZzYWEB8/Pz2NzcxP7+vhrH8xCxEAH52dFFIrmdVCY9BzkajbC3t4eNjQ3cuXMH9+/fR6/Xw4ULF7C2thYK+ZRsWtYziIRRNDfWAh2b6HPx+h3ZyLRsNJdTdwPg88NK8Gh4U7vb3o+BRhFxTWnZiLwmyK4at3DrWpxWEoj2mU8oLUkUSSplZJc7J4iGwyF2d3cnP3rhQTvPlglDGwstScM/S+4xH4+DgwPs7OxgY2MDW1tbGA6HmJubw/nz57G0tHRsoUlWpAceYpCscaseR524Z3TN5MSl9CtbFqw1obnYDzNE8P9LS1JDNFDPoe2KXhKlpA1aNicuJNSNE1r1tTdeKAE02c07nQ4WFxcxGo2wsbGBbreLfr8/WWxWAoKSoaa7tmFKR4yyHO5S0/K5zmg0wu7uLu7evYvXXnttovu5c+dw6dKlyY+WRDfP6ByJWp4aonVLXdeSlz6stQLIa1Cba9SaLNG5dH2LMkISWgrpOIkVxyi1wGigmbsHkuUkWV+RWKSEaceXuLUk3ef9opO4iT557JaWljAYDHD//v1JXE+zIqRFolm61ukF/tw10pTazecit7a2sL6+js3NTezt7WFxcREXL17E8vJy8QsM0tzRkjKale/Vk8pZ0MZIA/2pOKm+Bm61R9dLk0P4FJGwk4TWWZL0b2vUAT9zGY2bcETiOiXEUcclibgopXpY8lJKJ8aLH82po0uWvbi4iHPnzuGb3/wmdnZ20O/3ceHChYnLmtujsuj45/igZhVL8cqsv3QGUmqToqqqY7HI7e1t9Ho9XL58GU8++eSxrLYE3ramJ9Ur682vWZBidnT+0n5Oi3A8WLp78zwSm+TjWifEFtEVaBlJ0gXa7XZFouPk6ZWR7pcMaISovMVWV37denVil5bb6cmLxHGr6uivCq6urmIwGODmzZu4efMm+v3+5KfHqBztDZxsPeXznXmxSESd60nPxdv0RqPR5Ezk+vo67t+/j6qqsLy8jMuXL+Ps2bOmjKyPNiciR12iLnOEkKi1bcVxadm6qBNe8mC52HUy1iVoFUlytOEHLzKsiVMn+3Ya7rR3TVsE9Do/0M3lNbFEUko4d+4cnnjiCdy9exevv/46Op2jP/OwsrJy4ryhBT7m2nhyC02yPjTrNxPk+vo67t27h8FggEuXLuGJJ55w/zKi5IlMwzWW2oighAD5GVYNWnzSq8vHRCqnzTXJmtQIlJaNzA8NrYlJTpMQsywpExcB3X2lrKeGOnHPhwkvJkn/1xZrUyuj3+/j2rVreOyxx7C3t4dbt27hzp072NnZEZNGnU7n2PhrcVMPNPmjWYD5X45F5tjpvXv3MBqNsLKygsuXL2NlZSVMUFTXJgv1YaI0kUOhHRbn9yisuSbF0nlyzTosL8nM8JKZGa20JCPxRI/46h4PkpIW0v26qJvIOU2UthstL+3wKSVcuHABzzzzDF577TWsr69PXlHs9/vHLDQaN+SLMZ9llBIbfPLzBaSdi81y9vf3ce/ePdy6dQu3b9/G7u4u+v0+rly5gieffBKLi4uNY+fUirKSM1zH6FlLDRaRaNZYRC6VETUUHoYHZsVrM7z53BqSnOafgpXcR14GOOkCeQQZhUQOD5McPXl1YpWWC1VqdQ4GAzz++OO4cuUK7t+/j/X1dQwGAywsLADAJJHDrfhMSHniZ7dQCuZr4QdOrJwgR6MRdnZ2sLW1hbt372JzcxOj0Qhnz57F5cuXce7cuROxcyBOljwZJd336pfcj8Sn+TopIWRNnnddioFblralS3T9SO1H6raCJHlWtcRK1BaDZ35rLtC0ki+Rl/Gj16OkVmeyaOC/dOQlB0oX1MrKCt72trdhZ2cHL774Il555RUcHh69+nf58mUsLCxM/sJkJsjI5tXpHP/V8Kw//zMPuSwlhNz+/fv3cfPmTdy6dQs7OztYWFjAlStXcO3aNSwtLYnEY81ZTqASCVVVdSJGZ50ZlPotIZrwkMY2YiRI/bbWlCY/On84mWoZ7tLQhtXXVpBkiWXjvQpIs4pasLpJNrrURbBIPFLWKm/ViWTlpfLWIXZA/gHbum94XLp0Cc888wxu3bqFW7du4fXXXwdwZGmeP39+Ek+2XGltwUSIhJNRfv1wc3MTW1tb2N3dBQCcP38eTz75JNbW1o79apJ1/IiCz9lMmnzMM1HSz7SdyKuoGkpit3XkR9q1CLhpf6z+cTKm36XTERytIMk6kIhDysZa9S1IlmYkW+a52Zo76B1T8YioZJJ5lhgFt3bq6Kndn5+fx/Xr13H//n18/vOfx2uvvTb5EeCDgwNcunQJS0tLx6xAjTC1jc+LLecf3Mhu9t27d/HKK6/g5s2bODg4wNLSEt761rfi+vXrWFhYODHvtKM+HmlS6zL3i5K+NI6eJR1xraOoEy+06mrudYS8S+KiUUu4pH+tJcmo9VT3bFdkwTfJRkbc+BKduSt2mtDijhIRaM9J05db+8vLy/iO7/gO7O/vY3NzEzs7O3j11VcnP6e2trY2eVOHW45ZBtVFSoTka3Sx5fjjwcHB5G/wbG5u4vXXX8fdu3exvb2NbreLS5cu4dq1a1hdXT22wUlhiJKzpRJR8nHikLwk3h7/HIVlbVngvymZ26dxY26pSZZcKbx6TbxFjtaQZE7cWA87P4Q8QE0HoPQBRa3HyD3N4vQynNMgyZLXsyzLsmSTseJFFy5cwHd913dha2sLX/rSlyYZ5e3tbVy6dAnnz5/H6uoq5ubmJi54tkJ4e7kd6uLSspkcs2u9v7+PnZ0d7O7u4vbt27h58yY2NjYwGo3wxBNP4Nlnn8WVK1eOvaNN3ePcN+oe8/HSCI0TpXZNGjdu4dMymjXvvV2mfY+AJl4pMWaipLBIWEq68jBKrusZOpG1/aZJ3ABlvzBuvdY1Tbe0CfhOyiG9KqfpN233KjIG3FrX6nDrxrNyaNn8udvt4vz583jb296G3d1dfPGLX8TW1tbkD4htb29jZ2cHi4uLWF5exvz8/LG3dKJx2UyU1ILc3t7G1tYWtra2cPv2bWxsbGA4HGJpaQlPPfUUnnzyyWOvTWr9sp6FFYOW5r31hhntm+bqWx5QyQYpwYpZWkSpyaIkGo3xejKzfhEjKFKmFSSpxem88hT0zFlJ9s+DF8iOTlCvnoRom9Fx88hUW+j0uuU+80VbEgrp9Xp4+umn0e12MRwO8fWvfx1bW1vH3p1eXl7G2bNnsbKyMvmZspTSsV8Tsg4rV9Ubf4Ihv3K4tbWFmzdvYmtrC3fu3MHu7i6Wl5dx/fp1fOd3ficuX74c+t1QibDoeEWPSXH9pbZ54ifLrxMGKgEdR609jSgj+kpJQSrHAi/D2/TiuRZaQZIWrNgMvZ+PcETqR8FjWJr76LWjvYxf4uZq7ZbAs3a8NjgBRPqhLRCpjbm5OVy9ehXf+73fi8XFRXz5y1/G+vo6Dg4OsLe3h62tLdy7dw9nz57FaDTC2traZGPkFiWXf3BwMHGzs4udz0Kur69PCHlhYWFCkI8//rj4q+OlG2GELCW9rXgmADOmeZrIOtYlZjp3ojIiHplkvXoeXQStJ0kJnktaMhE9uRQR18FrzyOWbJmVJmkiZTX3TNPBAu1H6bERizAWFhbw7LPP4uLFi3jsscfwhS98Aa+88gru3bs3iVPeu3dv8qcUHjx4gLNnz+LMmTMYDAbHfp/y8PBw8qdf8x8h29vbw87ODjY3N3Hz5k3cvXsXW1tbAIBLly7h6aefxjve8Y5JZp1vLNo8s8bMssTrHpKuKvk3NOu+ARRB5PlGf0hGOjrGEzpSnRKizDK1taTFTDlaR5LT2BEtGXXdY6ksdyelhxElyEjCgz/M0rHy4ji0TKQsrcOTGZE2NcLo9/uTH7RdXl7G1772NXz1q1/F+vo69vf3Jxbh9vY29vb2cP78eVy4cAHLy8uTVwZTShNSzP9yDHJ9fR0bGxtYX1/H3t7e5Cfb3v72t+Ppp5/GY489hrm5OTeJ6FmY3pE0izT55hORBZQdap82St+Yi8QtKaJJUAu8rcgG3zqSjMJKFGjlKeqSYyR5JLUXkU0h1bcyxJYsCd55Q6lcvi9NrBJLXiMHfm1tbQ3Ly8t46qmn8Ja3vAXf+MY38NJLL03+zgyNKa6trU3ilfPz85M/FZEJcnd3d+Ky5x/8zT9a8eyzz+KZZ57B9evXJ+cypcVELWDLwtT6w+9Lc0kbU8+6j7rp0yTKafwojWYdeuvHy5B7FieFt25aQ5L8OEe0Tv6/zvvIddqSvpfsgl4mm+O0gvGnUSfq8pdYVIPBYPLDvI8//jguXbqEl19+GS+//DI2Nzcn1uT29jZu3bqFhYUFLC4uYjAY4PDwEMPhEA8ePMD+/v6ELPf39ydnILN7ffny5Yl7rSWo+GetL7mMd5zLCn94m3AkHCLJKH3XnJf3iNH6W9xUNwmlISYt3mgldjl4YkdCa0gyAp7x8spm1H2dSxpAHhDW2qyDEuIt6UcdvSS3OcuhB4eldqxkm7TQpWfFZSwtLWFhYQEXL17Es88+ixdffBEvv/wyvvGNb2Brawv379/H1tYWOp3O5Cxlni/5rOLh4SH6/T7W1tbw+OOP4+1vfzuuXbuGixcvqq8b8rHg8UXJDbasSwqpPg1dcFjz2Du/yhFxy0t+T0EqVzrvpHnjJVy8hKoVj6TtWnzSepJsSjxURqlVZrVdmuGkdaS6Td3zEhmaXGmhaTutlumW7kl6c/fV60MmpYWFhclPql29ehVXr17FjRs38O1vf3vyvnU+B5nbzceEVlZWcOnSJVy/fh1Xr17FlStXzL9TY42nZnFygvOILRI20SxOSbY2liWe1rR+jYvqpd2PlKFvUwH1X1OUELFeXZJMKV0D8BsAHgdwCOD5qqp+JaW0BuBTAJ4C8A0Af6eqqvV01MNfAfAeADsAPlhV1Z957bA23fvTOkAdISxvED1Tv278sw4Rl6JOe1oSwbMSM6zD6Vo71ILr9XpYWVmZ/CmF7e3tya/23L59G1tbW5Mf8U0pYWFhAWtra1hbW8OVK1dw4cIFLC4uTqzH0tMQ0lsh+Tu3siXZUUszQ3OzvbkW3XwoJGKNhgM0XTIRRfSl7rOWGI3G8fnc5gYLJcim7vYQwH9fVdWfpZTOAPhcSunfAfgggD+oquoXUkofAfARAD8H4N0Anhn/+34Avzr+34SnLH0okQfEJ693DICWLYFFkKUxkGkQpLTbSjK9JEDpJmS1xduTkh6SZelZaZ3O0Z+pzST41re+dZLFzucisxWZ39Lp9XrHXGtNR60vPOFCE4i0vEaEVjvSgXjrmIzVB20j8rLkJfe0Yzr5vnTOuGR9RcvWXUsW4VK4JFlV1asAXh1/vpdS+jKAKwDeC+CHx8U+DuCPcUSS7wXwG9XRaP37lNJqSunyWM5UMI1FTEEXZcmh07ru+DRCCFyOlWiQ4O3GEdfO00urI72ZE8nkamSVLbhut4u5ublJu9bxDim2WBKOoUeepI3SCxtQ8KM+2rjQspZ+kstvhQeiKEkclWaYI+1GdY2GNbheGopikimlpwB8N4AXADyWia+qqldTSpfGxa4A+BapdmN8zSXJ6K5WQpC0Xt3T/bkeX3SWO8LBLcjoGysS6oQDuK7S8am6VkWG5brR+9ZCtSwwWl5bOLQe/S1K7VlZoQJNBzofmngeUl85CdNylk5cN/o9j4NkXGgbkief14sc/uaHt6m1WZovqAN+LjMqL0ySKaVlAP8awD+oqmrLmBzSjRMjmFL6EIAPAcDq6mpUjalakBLxaZBcB0uu9T0jem7LspyjVp1GDqWES1HiukUR8RJ4rMsrKxEEJ1nNepOIvmSuWBalFeuTyJKXkSDF+PJ1LalELWkr5JDvcZKRQhDTQjT+GAXVb5oxSaSU+jgiyE9UVfU748uvZzc6pXQZwM3x9RsArpHqVwG8Iij7PIDnAeDq1ath5ou62t7ip5PHqhdth1sknlwtg6gtUKs/JZYsR8Ql1aAdBdLgWR6l1pnl/nEipXK1eJXWttaO1P8IcWtWHeDP28j4aGc1NQueEr8X05aIhY5D1FtrMmeluhFjo6QuRSS7nQB8DMCXq6r65+TWZwF8AMAvjP//DLn+4ZTSJ3GUsNmMxCOtTnKXyZIR2cma7E4SOUkEqcmygsgRXUrIUZsknvsWsS4lC0z6zuV4sca6lmxEtodIzM0iVUo2XqJQcqclK0+Tz2VSWDFNSw/abr4nJaUsotHmp9Qf69nkc62epafJa+qaU0QsyR8C8F8A+EJK6S/G1/4xjsjxt1NKzwH4KwA/Ob73ezg6/vMSjo4A/czUtHUgPdDS7GC0nGdBWjFHS3YkThkl4MjEisiJlJEWqkScmvur6WZtep4FQ+tZVm+dhIDUHrfMoq66RPaRcfBivCWhC6kPWYZGfJ53wst4oS1uqVqwNnJvHUSMGYpIdvv/ghxnBIB3CeUrAH/PbVlAhJikhANrP7xbZZmlKInnRXc3TedIcsWyLq1FGYnnafA2H2mhS32JeAdeO/l63fOOFuFr4RNtA7bcYdpfa2wl2ZZVJiVjcj+0Mbcs71zPO1SuEZp1LTrnpLgh7YPVVqRsieHS6jdu6K7Gicly6zSUxvGssprFF7EerbYl96K0PG/Pi01p1yS50fN/npvH6+RnXOIm0fI5i0t19GC51BGrvNSls1xbXq40xBEJb9C1w61az/qLwDMC6rzJE/WOrLLaWoxyQKtJkj546whHZFHUdbObBImbtFu3vDYhoguRwuu7dpzEs8w8MpU2QC904Ln/Eiw31avjHdGRjinx79pYWuTFSU9bF1ryRqprlYsSZnSTPS1ECVKD1bdWkKRmQdBJaA12nQehxVykcpJVJ5nu09Qxco7Sc0U9l47LocFyTbZ1vEWLudEFyK00bXJyqysy2Xnmmepllc/6RS1RPmd4H6TD8Z7O0vyQrD3+XVojPCSlWaWc5L2QhdePOhu9tIE0MSxK50wErSDJDGtC0OtefV7XG8wIpMGPuLpWWxHykwirRJaH0iSORJaePCvLasUYPUSsUktX+vwi71xT8GSU155mtUXcaq6vVFeyMLXkGdeBE2qJi631IYLoaQQtB1CXmEuuAy0jSQrL/I8eI2niAmgxQUt2xHqYllviWYmHh4fmQtRcafrnD0ratxI504pr1SlfspC8M5C8DBCzpq2jQpJsKwwQPcyuueKc3CVC9sIlEUTDYLwdunFJuQiKkmcf9aoktJYkLUQsiLouaim462VZkRpZaUF3CSWuSIm1542XdZaPt8cnekm8ULNE66LEG7FihlkPz+X0xlYrY42TFAeN1vUSnV4YxcqEe2iy8ZccXYqEu5ro1hqS9GJZdeSUZMK88lJdSpBWu55OGpFaMcmoOxppJ9/TkgBaXf5spOzltLLCHJauGrzjN54LrLUVlQuctFCtmKQXfrISQNLasdaTJ5vqzecKJ7TS8FIEdV53LF2bGlpDkt6Zq/zQLLcuGiOkKBn4Jg+5dBFECTLq1mjytLACLauRB7ceo/HEko3Pe2tEazuPp2QhaeNltVMSO6S6c524Hp7ckmNCkXh9HhNOrJb1KNXxTkCuke0AACAASURBVBto7WuYRtKzlEij67k1JBmF54ZOmyA5uUgT0/rp/wjJRa5ZumnHPzR5pRlAayemFkaUvEvCDtYRGP7nBaRjNBHrToN3dtOyzCJxSFpXO0YUCW9QZH2j8TiLMK0wknYUiSIa8mqCqOeo1YnUaw1J8gUciZ2UdLbOg9EIUtvhI+RTElOM1vViaRSeyx3VzToKVCrPKs/H1yK9kvYiP84RsRQ1S9Cz8mhd78wlLyO1TS1nOk5WXLXUGqX6ReKsEpoSZJP1w9uO6tIakgT8xaZNyki8zGtXcjm8OlHrT+pXnqC53RI3RWvLc8ksq5XL8FznJqEHDxIBe891GvpoMdaSd74jZ0VpfevNF9p2hDA5UdK2eT1OlpKeHol4sdi6RosWb7bmu9TfOlamhFaRJKD/eKeEOkHYqNXjleNtafEQfo1OSGknt1wcq316j09eaQKVTECpPIXm3nsZcQ3Wc2ziPuf2LRdWQ+RMn2dRWfFHqYzmbkvtRrLQ2n3JItV01BJ8kXhgXWvTm5vSvVIPz0KrSJIvoNJzfhRREvNABz1SP5q8kMpEY5DeeHiToiQWKyHqonE9Ii56HUTODmZ4SRgNEXLWfl8yQ1r8moXJ24wc/8l9i3gDlsUaIW4ro10aGyzxDiKGQ4QgS4izVSQpQetA5AhIE1KM6ODdA2RyjrgBdeOFnl7eLl1qCVnXtXIaUdVBSTwsE0rEOpPa0eRZ5TzrNJK91+RIbrVH2tQtl+R4Fql1z0rWSXL4Z4nUmxgOpXpoaDVJWgs4EjO0vkfa88qVPBiPjKyJIbnslmUbIb4SC7PU4vVwmvHMEpQQrBaf9EhRs9hyWSuhI+mrtcUTNryO1C7/H3iD6DzXPRq20uKtVqgpSowavDCWdU1C60hSy25bZaPXNZTGMrWEiCQvEqeMEKQ3ab36JfctNy1qodYNb3jgHsTDJlx+bCdqSWrJEO2+lb3O/0vWnxSXtjLjdYiyTrhCqxe9X8fDmRY/tI4kabaXE2Xp62l0wniLtsQFLHW/87XSALIWa+GHfDWZ0dikteuWTNyoyzptYis5yZBRVVXx709G2tZI07MOS912Ohf4WtGOz9HytKzUNiVKTWdNH172tMiR1y2JOZaEmVpHkkC9SUs7zQkx4kZOk9xK2tVkahYoj6t5dZu4+Z4+Xh1ajy44KftNn3nJTh95n1ojAau9yEF4K7bHy1sxzShxae3zTdMaX76xStYolRM5JK4dIdLA+yD1rTQxK63VKLw6rSRJDXxSUjKUFkMTl6+ptcNJrG78kNdv4kJECbKEEOse6+DXShdF9Cyf9D65ZJFz1HEfJYLI363Md6R9rjN3hyUXOXrigRJrSUxVk2chYiDkdqYdI5dCZpH523qSpORHd7ooIllwb/erQ7aROpG4Zp1sdIl1GW3H0/O0wdvV3pixMqycPKJxZUmGNGe0OCKvy9vQkiu0HidB7g5LRMd1laxaSWfLzY5Y3RFrchooeX5N5m2rSVIb6GkdIeHuSgkicY4Mjywj7nzEivPaj7jWkT7U7aeFOkdHIuczqXzPSsryI2cSqS5S0kXSVSqvudxcjhR7lghNIlSui2RtSuEO6xVGyWXn4xRdV9bGFq1fcr1k7QItI0ltl9biSp1OR7XYpDcrTiPbSmVr5J3vRyw4CXUsHku2Ji/aTmmm0Tvvx8t4cks3SI30vI1Ci/VZcry2NLKxXGBOOpw8pXiipBuPTfK2NMtUKi9ZpbQdqU8SeBjJigVb64vLy9cj68XTszUkyUnRuu/JyJ3mrrY0aBGrtMQSjNaR4BFRSUJGK1dKkFEyt8awJIZkEWrdWJTWTt3MKZUB6JYXhURCWa6VuOFutERenCipThyW1SaRqGVt88+SPIrI66vWBhN93nVilBZaQZJVVZkkqO28mjVZetQk6r5b8SarPLciPdkWSdW1KktJ0LseaceC5prWsYw9aG+eZGiWkRen1ixI61gNv6+54Z6eVCat3+12TeKSstYSIWvnLKUQgGUZc7dcMlQs4i7ZCOvkACLyW0GSgG4yA/Zk9dzuLNuKvTSBRziem5f14dk264FaFmWEZOq41XVJ3oP1zDz9APvMHr1vtRO1GDW9LTfVs8w8suHWHc9u07KcLLkOEiFrbwBprr5nNVvz0bLevXVS6jXU8bo0tIYkSxG1KJu4ZBoiLqwX78pl6QKQLM66wecm2T7tXkmMaRrjHollNrFsrUXrnb+k+lnE4SVGLL0j8qVr2XKm37W1oGW6peSSdJ3rmr9z2fS6BMv70+Zm3ZdLuEzvObeOJD3LgpdpQoTeOUsPktsAxKw7HrD2CFJzf6P3LJmRe1YfvDbr4jQ2OEu+5BrychYZROJ9nPxKFrpk3WkEyueTZIXyRI+mj9WGNEZSmx5KNmDtuyTH877eVO42ECPI/F0jJOqmWeRhXY+4tVwPqZwX59MekGcFcsvOmyx1dPTKSfAmXLfbxWg0OnFtWuCyS6GRpnV+MV+zLC/LLeZkZlnP3LLUYomcnDhB8+8S8UUJzrPsNKvSKqfNo8gBc8+wqDO/W0WSeRAiB8C9YzelsGRI7qa1q0kPpZQgo31qIo/r6cXe6o4z/1s0GkpjRXxRZhKmZCy1FyVTbq3xtvnC1lxRKi+X5/I115XrkyEd28nXpfVjESXvQ9TFpvdoe95bOZYbXuKxWOU8A6kErSJJ4PgAe65Ik7OP0cVf4gLnuCKvR8tFdq+S2CKHZ71abUmbQaRNDo0I6SKq89wkC4miqt740Yr8v+RCRqzXTKTa4tbmj5UokjLGUaLUCFaDR7aa9cnbsRI3llwv3hqFN09KyFCyzOma1dA6kiyBF5vUEjqWpSeV4fclEosQpNW+1TePtKQHrU0eT1YpKQM+KUav8/aszLVm9WpHTAB7080WaIYUGpDazsQQOV+oEWGUXHg92jfaP8kdt+RILjata7nwwNHY0XUUjUN6iBJkHeR+HR4e/bXTN4W7HZnIvCwHJ8q6g8gnmUY4FilSXbT4qLeLee17LrzlamtEH0GUFJuGQUos/AxrgWrWXSZD7qLn/zWypN/zsRvLGrRih5zQrL/mqFl9WrsaCWtEyWVK/bZOBmR5GdaaltZ9ExfZm3O0z6PRaLI2Le+iNSSZIblQFjyrLVo3Gtu0XGc+wbjMqAWltaddi7rnkdABR50YYlNybAKrbc/C4Rsb8IYL78UxPTeVl9GsPcmStlxb+lkjOo38Imcgcx1+1tiaV7wtToSaxR9B6dyykqt5bnc6HVNuK0jS25Eiu4xFkJKraw2KlBTS3GXpu0SeFqFp15oQpDZxSxIxEkFqfdUISFsgVhmpLe+coTYvtMx0RrYAs8vY7XbFhEeEKGkb2rk/LclTQmy0LYkotfraoXeJ1LR2+H2pDW2NWfFkK9TgzdMSss3j3+12j5Hkm8LdtmIZdWITEXLTZGgP2bJatXuepatdKyFIjfiiFiYHJUdpzDz3XaobeQ6RyR59nloZvhC5VUHBLaHShI/m4nL5XJ/SjLfmsnsyc1lt49IO1Fuuu7TB8L5H13nEaizZ9DminmdrSLIUJQMYdUEtwqNlNLKySMxy0yUZmpwSnSOTrml8kS6E0jBHSYC/jmvvHWmyILmcVl0v7tYkG+y1IREvt7Yli4/qwD9zGfkePyoktWHpwcuVoCRcVTJfPNc/rG1KqZtS+vOU0u+Ovz+dUnohpfRiSulTKaXB+Prc+PtL4/tPRduoM3iWtdS0bnSnoaCklVISSVUqy+tIcjSdI9ZqXYLU6lKdouCyJNn5Gv+n3Y+059WR7kvPwZIRtbhL7kXGWCoTWRPSHMufeR952EOKtXubqtYXzZCxdI08Uw7NIrbivpO6rvQ38LMAvky+/yKAX6qq6hkA6wCeG19/DsB6VVVvBfBL43JhRCaxZLnxQczQHp5Vly+WfC+6k1mLyLNCuR5SvyTS1HTmuuRYDD1HSP/lX5GRxpETB7+nTWBvImtl+LOua4FY7VnzjfcvMlfo2OZyXIakhyZfgvYcaHvSfNDkRg6v5+drybL6R8vwsvyaNdf4OETgzRvPownNupTSVQD/KYBfH39PAH4EwKfHRT4O4G+PP793/B3j++9KhSZHZHFpE8CT69WVHqhEkNauqN2X5HJ9LCKUJqF0Xxs3HmvUrAfeD20xShtWCaKWVqSNEjJuCstyioxVdN7l6/mZ8qRSE/Bx4EkwzXPp9Xro9Y5H6bgsawy0+6U6S2RLEXkRhf5vEWU0JvnLAP4RgDPj7+cBbFRVNRx/vwHgyvjzFQDfGiswTCltjsvfpgJTSh8C8CEAOHfunDl5pWMUYxlieW+H5WW0e5qVUQI6ySXZGjFJ7VnHGTSdrQy1ZfHW2XwiZa26kXKR8pKlxHWsc+CZyrBicjljDuhnLPkBdC3rzfWl9aM6S7pK7WrJm8hYcHAXXarH60/LU7BIWDuWZ26ugQZ/HMDNqqo+Ry8LRavAvTcuVNXzVVW9s6qqdy4tLZk6WIs537fIJkKQklzrmtQ2l8ctUE+fyCShCydKkNx9kVw8z30r7XsE07KKPNdM2+wka1j7zmXw8efWV/7e6/XUv9goWWyexTmtMZNQZw7QMlo5z22eBqxwCNczQ0o4SYhYkj8E4CdSSu8BMA9gBUeW5WpKqTe2Jq8CeGVc/gaAawBupJR6AM4CuBtox4TWEW3yRNwha4Fr3y1ylj5H++MtAm9ToPIoOfJ7HuED8d/2k65FFgO1iHn5kh830XSPZIo5eB+856cd/s560Tdm8qtvVC/6Kp813tLh9Kyfl4mmfbOy3vxtIdouh2WR8s9aXQrtmBGvp52J9XhhGnAlVVX10aqqrlZV9RSA9wP4w6qqfhrAHwF437jYBwB8Zvz5s+PvGN//wyo4a/luoFl1nrtY4ipGdJKgEYO3uDPcYLFChBEL0runtSe1LbVroclrpfmetCFEiThnX4fDoVjWszp5rMt6/pp1qT0fKpMndyzLUpNlPZOSeR+xXD2Pq+468zbVOhZoVJeo7CbnJH8OwCdTSv8UwJ8D+Nj4+scA/GZK6SUcWZDvjwjTLMG65r9UTnrgUWtJem3Rcq09eZblqFk1XI5kUdHgvtRu3TONVB8N9HgI1XtaP3jAdZEsMIlk6r6kECnnzRXL4uRxS8+y1Kw1bilasUzavnUYnFuukn5chjUmtB5HHW9CaicSb6wzF4tIsqqqPwbwx+PPXwfwfUKZPQA/WaxJAHXJUSNFjwAirrnkmkUtO8k60O5ZMjNKfsBWe32MLoRS6yCPBR8Tj9wigXvaV+tNlGxdUf01spBQuoikBS61p70aKL3yKI2L9haNdZBbcr1pXY0orb5K73trB9Y5omSleZCSHE2+tt7qWLytfuMmumjoNYvMIrIjroenG9enhPC88poOPA6pyefQdIr0r66LVdKWtWB4PIuW5RtGyQarnaaw4L2LLREIbUvKhluWoEaA3ALU3gH3iFKry69zudY9CotQrTGPrjvtWh33vbUkqQ2Gt8vw+hKpeFZZxOrL13g79LtE2E2tXH7dIkfJ9dXa1lweroM3SetMQg7tNTEpgB91zUr0qkv+kl6cMDRXOdeRfkhDs+Ak+bys5hJr+vLrgP5rQfxeiestjUfEQrT6oJXX1k50M2wFSdY1g3PdDE5EpQTpWaGajDrEUBITlPSTyFGyXrQAf5RULBIqIaaSjPO0LQHeF62MR7h1+mCdS9QIjRKlRHYSYWkWpGUVeu41HxupvESw2tzRflyEo5QLIgTZpJ1WkOQ0ECFIDs2ltiws67rUdoaV+JGsWApuWVkESRMCGixi1cpGxkRrI1qHo2mmXCurkaFHjtZ9zUrRrLQ6REk/ay6tJZfqapFdlDw5pPHUju7wsagD69lr618jbEvWm5okI3HGUoK05FvyPGgko7kCdVAaMwXiLke0bU7okfiUJ/M0EJHNCQaIW5N085kGUWadtRij5VZzy7MJUWr1qE687x5Kn7MWjimZvyVttoYkNbNde/DRXYTCsjIjZrkWf5Ta9uRG6kZ0k2RFY6+ePlZ577q3YUmWtZXkoDK8YL93OJvq6G0SUswvQ7Mw6xxm94iSj4mUILHikRJR0v5ZYyrJou3SMeAhq2kd/7JeQODtlkCyzDlaQ5KAHouqM+k4LIKzSNMb/BLCpPFFra5HyE3+TnWUIEtijZ6sknIa2UvlpMUXsYpLvA1vkZfMTc2Ck4ioNEYpXfeIkretyeWygbLfzvQ8CW0jk+RqKJ2/vJ43Z1tDktZu7LkSlhxaJhpf0yy6PJk0l5LW02RI9+nnEmvV65u3Q5bEGaPu6cNCtF9N5EhlI4kLTb51dIdbdPw7PSIkESIFj19KRCldixAl77M2JkA8UcNBZVrWPp/fkfBbqS5Ai0iSwwqyR8xtbZcosTDo9cPDw8k/SmZcJ80q1HTmBKmRo5esifa1ZNfVJp00gb1JN20CrXO+blqunwcvBsnjippFR+tI7rdHdlJ97RrX0SNKfj3rHxkHzyLlc8prl8rUYBlDWowzo1UkKe2IfKAlkpDIgl/j0JILNAidMRwO8eDBAzx48ACdTgfz8/OTv9XL38G1XGyqk0Sm2vc6BKn1NYpIbFGzhh4G6rSlWVxeHSl7TGHFKTWSkOJ7lOSojhZR0n5QK7WUKD2314phWve0uScZP96bVBLqJIZK3fNWkKRETMDJWAi9Lsng9yL1NLKhZff397G1tYWNjQ30+32srq5ieXkZ/X5f7I9mxeZ2vAVe4iZr7bSNsOoQdQbf6UuOb3A5ubxmzUmwLGgOywPSjuRYbdHrUetPcp8tQrV00Y4y8Xu0vkby0jjxa5IMDU3mVEndVpCkBs3E5rukRXC0HlBvYA8ODnD37l1885vfxGAwwFNPPYV+v4/5+Xk3VirFHjMkXTzTH9DfpGnq8lrtSm51E3kliIybpI9klUky6LPy4oteeIETB3CSMClhabF4zSLM9fJPr1k/jiFZoZYFyUMBvF8S4Ut9lhI32nPgqDNnpL6X1rXQapKUXB3JxfYWrjYQmkXGF81oNMKDBw+wubmJlBLOnz+P1dVVHB6+8QvUFglGrJQSEvf6OC1yAk5OaE480Qkpkb9kNWmWVElbWvnI4rcSiJIsyy3UCJMTFoVmTWlEJ/2SELUeI0RJdaeWJr3GdZU2mWjM13Pt63pBp+U9tZIkPVKLWBJWoLYUo9EIe3t72N7exuHhIba3t3FwcODWi1iFgB1f1H6oYVpESHW09C3ZfCJjX3djmwaibrZlPXFZtI51L7JRaO6rZAHS7LdGlJJ+nqutJYQkWZpOGZFjUly2N7+ja8trx5sDQAtJMrL7l4JafFVVHfsO+G6mttvmuiUPSyM5jyAtayfrmetqh5w1q8cjSuuZeH23rEWrTCkssqrbbkQmhWYdSu1lYrEIRrIqObFxq1I7T6m571rsU2rfKyuNmxVS4KBj4sHz0qaZVGwNSZa6i5IrbpXNg89Jj7ZFJxG3dJaWlrC2tgYAOHPmDPr9/uTPr2r90EB3+Ijrqk0Iz4rRyFKTL5Wt41qX1NXKNHW3vbKcaDhKjrpQmZwoNctFIspcPmJVZllRoqTf8//Rt3O0cfKSMhHy53XqGBzWvSYbb0ZrSJLCi19JBKOZzdxyozHECDqdDhYXF7G2tjZxsS9cuIDFxUV0Om8kT7SdNMN6+FbGmxNkdBJJlmVJfQ6+iUUPUPPvJRtbXUgupNbvkvCClECpC48oeZs0xsj194gyy5HilNpLG7yP0jOPuuGaPMB2xUvmgDYnS40vCa0iSSkjyK97MSRvYOssvvn5eVy8eBFnzhz9Rd2FhQXMz8+7P+xamn2mkP7APUedbJ4lU9uYpIlWQi4l9y2UTnKrvBebkuJqkU1ZyhBL7rGmr3eA23PnaYwSOJnQ8WR48VB6j9+XrlkxXckVp/VLYbn1Vjtee60hSU4ofJcD7IerIUKcEb3m5+cxGAwAAP1+fxKL5FYkrSd9Pg1IZCkRtgSN9LQxK03uTANNXLC6lqslx3LRS0kwX89yJUNBI0rLVc7fJfdb0sGLBVp18/08BhosAqbfPUQSjVJ5Sd9Im60hyQxpN4+6N5ZLGh1QPhlpYiYfHrfc42gsLIJclrvOmgxtskUscU1uSVjCq+cF8Evc5KiOmksowSIxzTrK0Igz1/H0lSw1ro8XH9TK8ra9Iz38e052RuRHYFmXkTr8muYBeJt5dG63giQlKxKQLSMvc6gRwmlbc3WgWaFN5FFEwxRWWYlgeAytJB5LF2c0TlhiHWoua6Qd6z6N/Ul6WDFFqc/WmzbcUuIJEGs8pbLSHxo7PDw6kD4cDl0PTYuHSvDmmZbk0aDlJ6gcnqeInlaIohUkCZwkRC8RAxwfnBJCyIgQVJ3zWJ5FZulnvadtodMp/xvMkqttuZEUXpDckqtN5BKr1UuE1YF3GiASXyux3KRxsDYRrU2NYKk7rsUoo5a2lqDR8gi8L/SaJl8qVydcFqlbIrM1JBmNiUllJLO7CSw5lqtdIqeJDE7cEddWu8fLRWN4kXYkOTwbG42dAsdJLBqCKYW1wXlHcyKkkcEJjl6XynFwi1EjbB63lDLfuYyUrKJryyIyOiaSjrScBK1cCclxHaOGiYdWkKTkbmuLJericfm8XKm1V3c3a+JOR8gvolc0MF4nEF7qykqZ0egY1Y2ZWlZrJIYV0UnKXFsuOm1fGpN8z3LDaR3N0pOO+EjJHH7ml5OmFhOsE5P0UIfQPIPE2rw8tIIkgZMxHe+IQkbUEindkag8aTHXXVBWe6V/O9uaGB7h8biiBaudUmswcj/atpcIisigc02zTjXrJEKIksVJ72tzXbIUPauZW4/5mleX91s7qsSveevVml8RN1oifQ/S+EpJqRKibA1J0oGOvAVRYoVoi9iyHK1sn1RHignSdiTrSyLNiNXrEbsEPl5WtpBDi/1K9zWdtAlr1bF0khAlTa/N6OKU3E1uFXquqOQq8/KehRjRjVuu0t/3zpDIVitH+0Lb47K4/vn/Equxjjc3DYOjNSQJ6Ls0IBOnZTVGjsNI7dIynMwiO5lnydIHR9uV/nZNlCA8t1wjOE++ldkuhdZvDXX7bsUNtdieFxoosXjoRk/vRYnWIkxOuhZRapn3SF2uXyQWGfECpXt1EjMW+DOPwGu/FSSZUhJ34QwrRslByYi3IZWTdKH38/e8A+f/pZgQgElsR7Ii8+doHM96PZN/Lw0zRMdTyoCWnDnl+p0mQeZrJcdMIvciC05KlNC6UrwyQ7PEJDLSSFcjJ4u0rLdy6HfN6JB0kYwbrg8tVxrK4Yhairx9rqs1D1pBklVVTe0dzowoaViLmE70g4MD7O7uYjgcYm5uDoPBYPLmjUQalCyzK24RpKZfpGxpIqVuMokTZYmsPEZ84pfqEhmfaVom2tEeCZab6sU9MyJkyV3niA4SiVtv5ZTG7aR2pfoeOXrEWHfuSm1GQ3atIElA3rWbDIgEycq0CCbrcnBwgHv37uHu3bs4ODjA0tISlpaWMBgM0Ol00Ov10O/3j/0yUNRVA44maUmMUCtTJ67qQbIcuLxpWYeeVeGV59lgXi6yQKU2IqQx7SyvZgFKenB3nH/nfSghSkCPuXJdI8Tqha0i882rJ0Eby0j9VpAkt7CiprgEq4436Dxzd3h4iIODA2xvb+P27dt45ZVXsLOzg8XFRSwuLk5IcXFxEcvLy1hdXcXCwoLbPwrthyxKExyl1hl3oSLJl8gk1cIVks7RSSrd93T17kfaAHCCZCiixCi5o9FTBdrittxurjv9TokyX5OIksuLxkK5ntIrltPwDD2LnIOGvbgMD60gSeB4p7W4onYUIyJXgpR1G41GODw8PPYXEjc2NrC+vo6NjQ3s7+/j4OAAe3t7Ewtyd3cX29vb2N3dxZkzZ3D27NmJpUmTPlGd68QhI/KzyyuNrzbmdSZWhKC80EOJtaclZErgbcxarNNyKek9LcNrtWlBMiw0b6yOlSv1VwqxSDFXupZ5mMfSRbtfx4LkBB2tJ6E1JJnhLRzuUkUWkxQfqqqjv10zGo0wHA4n/2diPDg4wP7+/uR6t9vF5cuX0e12JxZkdrcBYG9vD3fu3MGdO3ewtLSEc+fOYWVlBaurq8d+QQg4OcHzd+1hlri5UuwxelxEkiGV8dr19GziNpXIioLPFd5X7xhMHl/uifBrkfYtSHFGi7z5PW4R0zLWa6Y5lkyTkxqkhBXtp/e8Ih4U1SWvmyi51pk/rSDJnN22IA261GFpx6Y7+2g0mliC+/v72N3dnViQ2UrMLsdgMMDCwsLk9yMHgwHm5uYmMcRutzv5kYDt7W3cunULGxsbuHXrFra2trCysoL79+/j7NmzOHPmzOTvded62b2J/HYk7SMtF8nuSW6ttQNL96PB9GgwXEKUfD0ZmlVV0i5HhMgswpGsr2ibGmlr7UgvCkTJXnO5sw7S0abI8R/eD+9YkVaPtpNDYtTAyLp4J0NK5lUrSDLDGkQNdHDyoGV3OQ/kcDjE/v4+hsPhhBz39vYmvzSeLcNer4fBYIBut4v5+flJrHFhYWFynU4YagEOh0Osrq5ifX0dr7/+Ou7evYtbt25hfX0dCwsLk7/VfebMGSwtLR0jXipLGgttnKLHHyRi9LL/nvUamcwWopuBVT86R04DkfYlkssEXjLXI6EUqk/ExS51wbvdLrrd7rF6/HiQ9JaQpe9poOS0RbReiCRTSqsAfh3A2wFUAP4ugK8A+BSApwB8A8DfqapqPR219isA3gNgB8AHq6r6M68NzXLRJpCUdMlW4v7+/uQvGmZX+sGDBxgOh5OfhspEOD8/j+Xl5WMk2O/30ev1MDc3N7H4ODlmHfOEz2WXlpawvLyMc+fOTWKZ9+7dw/b2Nvr9/rH7q6urE3e82+2K5+G0PkvWt3YmTSJVK/Ymtek9vOPZCQAAIABJREFUH42AS91nXl9r00pYnAaBSjG3DE5KPDkSkQ3Ezz5GdDwtSARsufH5exNoFjXVierhyZFkWDpGLclfAfB/VlX1vpTSAMAigH8M4A+qqvqFlNJHAHwEwM8BeDeAZ8b/vh/Ar47/N6G5I/wBUHQ6nQkx3rt3D7u7u9jd3Z3EFfNiomSRj++srKwcc6F5XJBbi5EJPzc3h7m5OZw5cwaXLl3C7u4u7ty5g83NTdy5c2eSJb99+zZef/11rKys4OLFi7hw4QLOnj2L+fn5CUHTvue2tViQRVg81in1w7MwrftRUo0GzyOJIjouuc+875bbLZGaBu31QdqWdryGtyuRBicWDZ4by08qZNl5jUSTToCe5eaWqtYuR/RUQKlFrc1rbRyl3IRVPsMlyZTSCoC/DuCDAFBV1T6A/ZTSewH88LjYxwH8MY5I8r0AfqM6Gol/n1JaTSldrqrqVa8toW31cG6+9uDBA2xtbeHu3bvY2dkBgInFll0E+m9+fv7Y36iRiDG3LelDy1Fi5dfyMaHl5WXs7u7i4sWLx/Tc3d3F1tbWhODX1tZw5swZLC8vY35+fhL7BN5wdTjhcVhudWQS1QmqW+TnWYReu03dNU5iXpuWC+Z5Nh48q0qLoUobQgRedterY73bLeknydF0joQDIoi8kabdKxnLiCV5HcAtAP8qpfQOAJ8D8LMAHsvEV1XVqymlS+PyVwB8i9S/Mb52jCRTSh8C8CHg6K8PZkTeIMid3d/fx+bmJjY2NrC3t4fBYICVlRUsLS1hcXERvV5vYgXSX9jhxMbBiUUiGIsggTcOiA8GA5w5cwbnz5+fvLWzvb2Nra0t3Lt3D/fv38f+/j5ee+013Lp1C8vLyycsXZow4gfPNSu3JFnDy1NwlyRSLmo1avCei/b6qtZ+1EKLLF6LLD1yoG1Kc1Ai8yjZeCRel2w1lCTGLBklySVAj3V6MVCpLX5fQ4QkewC+B8Dfr6rqhZTSr+DItVb1Ea6dGMmqqp4H8DwAvOUtb5ncp9k5DtqxnKHe2dlBp9PBuXPnJokRGl/MMnl92p4EK55H60YJKJPdwsICzp49iwsXLmBvbw/379/HvXv3sLW1heFwOOnbwcHB5IhRdsEpIZaQfLTPvO/R8qXlpDas65IVWBJ4t9w9j6Q04vSIi7rd2iYfkekRd+S+RpCSbpY8j8Qsjw84SailBOttxBpR5rJ1rGsgRpI3ANyoquqF8fdP44gkX89udErpMoCbpPw1Uv8qgFe8RkpdoxxvzBbjysrKMReV1vMWvRZrouX5A8qEZVmRUh/zOcv5+XmsrKzg/Pnzk2x7PpeZSZW+I85/FFVCxBWX+m4lJKYBy9WXLN5Iu94myvvEyUHT04olUkgxRI1oohamhZK6nKA5UVJ9qW78WlQPKTapWZq0bnSj5Md8JOTTLNlA0lAntOOSZFVVr6WUvpVSeraqqq8AeBeAL43/fQDAL4z//8y4ymcBfDil9EkcJWw2vXikFoCl4A+m1+tNYneDwQDz8/NF1gRvy1u83K2m1zW9pQdLreRMsv1+HwsLC5MjTABOZNRL4yleDDLad61O9DycdV177pZbH0E+6SARg6Yf35zpIpf6rbn+fFy0EwdS+xpKYnwRMrVcb0pyWlxSsjwpyfL79HtOIuXkpCRbuubNh3yKpSR2T/W1EM1u/30An0hHme2vA/gZAB0Av51Seg7AXwH4yXHZ38PR8Z+XcHQE6GeCbUwQiT3lozmAbLl5CzVqXUqxR83l1X5Z3HsItK4kl1tDUh80wpHKUP09QvJcw0hIw3OTSixIXofqkMnRKs/hhSay3AzprKB0TUPUUtUQIUqtXL6mhSo40WaiBOBmu3N9Pi+ynE6nM5FR6mZH5uf8/PxkLnNilsrnz5G1GSLJqqr+AsA7hVvvEspWAP5eRC6H5mZbr0zxelZMgpKLZ1lya1GqaxGkZr1EiSBqAWl9kNqLEFoJPHlRyzHSBuCflwPemCs5yaUhEtKR3vKiemixx1yGLlQtIUnvR+dGqdsutS1Zk1asVyJLroc1Bpm8qKUntRc9lsMhvbXGjQt+n/dRQ2veuOHWE0UkKxe1ViwX2YuPaYtTI8g6FpqESOZOI0c+LtF261h12nfLSm8il7eRLbrSjDWXzy0kr5zlvtGNXrNsPKIsSRyVwJJRKp9vFvRa/l/6Y2O0v9LbPN4c4eNtbaASIgZDa0hSWzh0ZyrptFTec7l4mYiLzWVYBKARl6YLhZW5s3TUiN87r6fBegZRcmzajlW/1+uphOQhj7FHEJLFBNgHz7lbzgklfy5xRSVSl+qXbBRU36gOUtJGi8VaiRtKqN7z16xESZ4VopD04GgNSdKFzWMaGrzDpCVkprnaUlkNJRakRaKa7lJZGlex+kbHUVtIvG1tQku6SUdXKCyCrEuIEqLjWweU0LjFlMHnrmQ5cTfdIhfeN88a5YgQpORyW6ECqT6XxTcSS1dukZfMD2/uSESZr0VDHK0gSS1REamnlY8syoj15+liHfcB/B3ZmxDRCWI9bD45PB3qWGFREowugLzIpkVsUUSSLpbcvBits5GS5SVZpZZ8S0epjETO3PL1LNImiGwq0vdcVwKfHyUcErFWM1pBkoA8ifj9SFBXW5DSwHtlLWvTikPyh5VjK1xeU5LPciVdNUjWIT/TJ+kQhTfmFF74I0KQ0mbUJFbnzcMMjcQ1cqTudr4veUxSfyKZcE6MVA7VVSJKSwYvF3ldkdbjY8b7FLE0JUjyJXm0fF20hiQ1d0/aHSKL1yIgL2ZHP0sxSIkgNRdda0/TzyNz2h5tV4JnDVjxIW2MI9ZrxBKIWsG0rGR10DLcQovItvT2oLn0UrySfuf3tfKaW+rpL8m04pXS2PH5mWUCZUSpgeujWZq5bd5Hft97dpaR5Y1ra0gSOLmLeufP8oPUji14MQ6JqCLWI5clESQnX/rdI0iLfCg5WrtmxF3ilpCUBNIQIcgoiUbve0QuPUfL8jotSAuek5B0+Nt7K8fqE7/HdeCbBidQvhFJcujz5GvBOnSu9YmuX+koEJ2LvD5/1lZMnD+L0hBOK0hSi0lKRwpoHemzBCu2xdvVCIxPCo/IqIw6BGlZj9SStbLU3ju9vN1pEmRdTJu8msizNqFSa0Sy1vji5oTErTrN0opCmhNR91aTlf/3rMuSdnIoQqqnWY3WmDSNa7eCJIGTHbHejY3Actk19y9CkJqF2OnYv8YTCTB7BMnPmdUNrnNXXdJdsyA0eBakNYnp+8VcB1qmBJIOngxKRlbbp0XkXkInmlCpS3y8rvXGGyXviF6aPlaCypL1MDfk1pAkjzVFSVMjQ0muZr1ZZSxdNZdXs1wt99Bz/SVXi49Z1HKUyFGLr2nQxqmUIL12aBkpwSQRmibPIj7LM9HCOhT8WUifrWu0LSsL7YGX41YrtwB5u1wXCo8II2/lSHJ4rFBaJ1J8tkloh1urFlpDkhTarmXt6JYVF0F0oWrlJXeZ7rTaBIgmjiT9KDEeHh6emJw8finpMc3ERukYliJC5BH5JRayJdvblPh9+t16iyZqMVrodDrq+9acKCVClmDFTqnOnCytslx+1LorMWbq1s9oBUmmZP+9FmpFlZ6do3XzQ6AyIoNF/6Kh5JZrBOmV4zry71o/KTHmt0skC5O66dJ1qW3rWApHHcLTCKrEIp8GtM2JwrPcSshMemZeWa1Nr4xGepZF6T1zqa6nG41T8udOy5YQXtaPztPIXNKg/SgNRStIUoLkGtEdyZvYnmsbMdUzOMlY7U+bIPl9bjlSayH3i+rA25cIUpuwdeM+UmigDrznwi0Ui1TpvQhBlugYOceY71nkxj0D3gaPT3JIZx6pftz11vqQr3GZHFoIQJOnEWupRS7pSXWKIkKQQItIUorpeHG4DNpJ65dfaILAi19mWV4sj7ZvEWRJjFKKddKJkn+TT1uQnCz5Z46oxZYnbF7M2ttGUv/oossLtcSal2TS7xpx8PY5rLkVjQPScZHgWY6SrDobDSc2LsMiQsnVlmKikpVqEWW2Jnm5EsLnRC+hdLOLEiTQUpLM3yWy9AK0UtA6I7qggTcIUiIuiyC5PI+M+X0r7skXmya70+kc++NhVH/JQuefKTihUT2oK69B2xwsgvSesXWvifXaNGtK55t31MYiYMsS4/JpWcmq0s4p0mvc9fZ01Nx5QLaAKVFKsiioTrz/tN9NIBGk9dxbQZLZ+uK7BR98el17eN41ye2VCDJfj8Qf6XfJWvPIU5rcUp08BlKChn6XCD5DWgwWNBKjBBwJg/C+auWaxiDrkJyXjW4KbnVJ4aOSdilZWh6HpIdnHVsEzZ+zFJ+ULFEg/tcXPZSQpZRt114IsdAKksywzG7LzSqJo0Xjj5FdhpKQtPgj1mUkhhY9+kGtRYkgqWwLnttq/cBpRE4pQWqb37QITZI/bbLkFp91UkNyZz1LX2qHy+cE57nKdfpmlSkhSmsde6EVDokYNSNHQqtIEjjpNkkuZyRGkSG5I1odL04hDWiEICUStx4KzcLTa7RNSobSn5m15EqITLomrqgmw2s34mJHILmb2j16P0KWVkKCh4oi5E7raG573U1CsgojhGgROyWtyFlK780cD14ZLwQkwdK7NSSpWYrAyeMHgJ+Rs2J7HNobNbx9Dosgrc8WoUlHHHI5uij43/fJsUhL37qIyIqQnbSovaTRtPpihQQsQvTOVNbNzHqJD66zpF++b4U6mlrcfGykzUUjS942j1GeBrihYx2Qj3h0ADC9lXSK0Fy6TFKUrPJ1Xjd/1uKPWUYuwy1BLRbJ9aPltOsaePtaBjvrllJSrQ0+JhnRRBbvm6Vz1BrUZFVVvV/kLkVpvTz+o9FIPc/n9V1LXEXqcl3yOPGzsfkz9b6i4SIeErL05mvNMmyka3Re1rH2otA8PU0v7zm0xpKMos4CibjXlpUnuc6UVHkb0vXogrAmtxenqbP4rPLTtEbbAs995xlomsmX6pdaaZZ1acnqdN5I2FnHvwD7tVgt2ULlcevZymDn+vy6FhKjbUlESV/coNcoSghW67N0akNDK0jS2llOwyzX/nwrXwiSVUjd/YySXSmCyIS0dKCLhJ8345+nlVzR0JRotdBFE0QWeQY/KSDpZyVWIm1YdWioSXNT+QH0TO7A8TktxTIl0ueEwucS7bP0fPjRIgnaPR5fz+55CfgmwUN1VNcIWkGSwMljKhnTjl948UfPesz/W65X0+AzP+4k6SrVp/WmcZ6sDh52LFQCX9Re9jWaSJHq0ecjxeGaPgdObtLco664FcOlumkxO04o2qFuTQbf4KV1LZEWLyPpVgd5PLxQiTXXWkOSlhujmeX8nnceCtDJJhpbsqwKDmuyavpYbXtyATnRUbqDWmUkK3Ua1rMkryRpE42rAcfJomlmW3IxPTLKc8giPUs3LYFD60tzQDqfKfVZ0j/3gfYxl+dlNKvVQ9ZPOy3Ay2nw4v4UkfnVGpLUlNd2I4kEoz+MS+WX3ss61Y05RvXz2qdtS9+9IHr0VUQJfJLyM52R8ZPAreCcmMr3LNlSf7zYn6aHZQlGx4wThGZpRhA9I+nFIiV4VnZpWd7PiPUaQXS+8k2H97vOxt4KkrR205JAuUUavAxtu+S6B88Nl3boiAwJfCw0EskTLLqoJDnWMZMsCzhObBq0RTIajUSrV9K9LiSC1N4w4fVorI+Xl+Ro7dM3Zmh7lgWmxT0jpxXonItaeZY1rSV0cnkvMaQRmUfC3th7Wey6aAVJZkgmf4l5nMvmv41jEZ2Wxab3mgxwxNVu2obXtkdsFkqtHSC2O3tEwsk2ExMnXyukwCERjlRXc/fqkn6J1SgRZW6bklsuo+moxd8kvegaq2PdWTFJ3gfL2OHGQxNdSstGNt/WkCRV1HOtSpB/MSdnySTSLY0RUlL1djKJcEvd3IiLYLkYVL+m48rra1ZUSaLEsgKodckXd53wgWRBevWmuZFpc5uSFSUNLXaZy1Li1Mjf0oOXlTZYyeq12pH6QGXSa/m6Nn8jmyo3eKiOWrKpBK0hSQ/ROJf0QKQMngQ+gPnh0aSNBikmV7JoIwuxNI5oWV5UJoUUqJfkam69pwcvZ8UnLYLkZZuixHrxrENrfmkZcMuqk7wqyeKssxHXiZFKkOYK75PkKUo61I0pav0vTVxytIokrVgHvZ/LUFgT08pMW4NWZ0C5ZconjxU3knZfr63IfclqiZKmR5RRi1FzD3l8LuubTypocTTJquQWg5csKY0lRsFdX6kud6f5NS9kwsvkEJOnp5Tl1iw9K9kDyGdwLYKn7fI2+FhJ/ZY2Ct6+BGmuW8TM0RqS5EQiHTWRynvxIO7GS595PUmnCDxij9SZ1s7uodSCBWRLu0nbdFFTWdLC0Swnb6J7SQSpjITTei4WgWuJEVpPstCk8pH2qUz6XZMZ3WQkS5gTJi1L69SNQ3v6SPI0tIIkqbVAr0mfpbqAfOg1OhhcvvW9dIBp2ajZb92zLLtSvUphxXasUAB3r/N3ugikhZbjydlKpJun565JsSqtfO5PnYSBhUj8V4r3SaQC6Nlkeo+OLyCHn6SNg+orESWFZ2VGxjG6MZXCCrtZulhoBUlmNNkRtQUBnDwArQ0KjT9a+mltRupYZUuhxehK2qmbyJEmeEmyJuKKWyEBGi/mlmYkFNB2aOSWwS0xLYEjlbNk0ftRorSSI1r7tJ5FmNIcsLigJJzGddXQKpLMKLW8gJOL3XMRvPa0Mh7pRWRpOteBRD7aZqNtFtPQI6qjlbTR+kJJMydzrPhkhraB1HWb67rc3kZmWXkaaHydW4A83lmyWWh1S4lS648WY5Q8Qm2z5DLqIuqut5Ik60AjJy324cFzsaWjPdE2rCQC0PydVSvwT2WXZsvr6EHbkq4DsUPEEvlJJOG5WdL107Q4H0Z8edrtSCTEz3BacdSShFhUDwklFmUjPSKFUkr/MKX0lymlL6aUfiulNJ9Sejql9EJK6cWU0qdSSoNx2bnx95fG958KtnHiH78fqcPrWmWkOrx+HYKMEE+no//GpDcWljwql8JbRNFFxoPpEfAYpCZD0ztbSLRuVVXHzsDyMpxY6XX+zxsDS+dSWJ5MU2ikVOKR8XJ5PvE5r3lWUi6BeixWIiaXtdZ6Bt38pX+0jscR7lh4BVJKVwD8twDeWVXV2wF0AbwfwC8C+KWqqp4BsA7guXGV5wCsV1X1VgC/NC43FXgkapGjJkf6DkAlmyZosrNaOp6mq5xRShIlZbk7ppGllPCh93jSgpKmJI//40RM6+a/ce5ZvFFX2Vqoda37ujK1e9wI4HpzIpXmI6/DT0poc9cyejyUkqClBxC0JHHkli+klHoAFgG8CuBHAHx6fP/jAP72+PN7x98xvv+uFNA4YtVZdQG7o1ELtQ7p8J2LX9fa4rqXtCvFaax/QDNXs0Q36qJRYpPuNdk4JFLM//O+Srrw+4eHhyIRarpqFqlWvsnckvTV+pLnodZe3XlWIkua+51OR/ypwrrjIrVRd4Mx2/IKVFX1bQD/DMBf4YgcNwF8DsBGVVXDcbEbAK6MP18B8K1x3eG4/HkuN6X0oZTSn6aU/nR9ff1Eu9ruIZnN0UH2iKQJSZXct9xhqkdUr2jfNVgLjsuwLD1qeUlWH78Xbcsag0xs9Fe7cxvUveayPVCiywkGag1Fyd1LRJSGZqwyHNx40DbwklMJmvzImHqWoSVHGzPu0vOy00DE3T6HI+vwaQBPAFgC8G6haB5p6amfeApVVT1fVdU7q6p657lz546UMQZJ2yVKYyzRspb74MmdxkPyLMU6bVljmzGNuJtEuhZBegtRWlycePNnakVKFqXVjmV5eUQdDUfwcjSxqMXTNH1zPaqnV04iE218IwRpkZzlemuGDx8Lj4AjR4csnSKIlP4bAF6uqupWVVUHAH4HwF8DsDp2vwHgKoBXxp9vALgGAOP7ZwHcLVIqQDyRCV1qIdYZwGnCOiZSct1CkwC2BWkj4W6+liQpWQSa28yJxyJKbZxLx4UnkWgySdO5DrxwkkQC1hrS+ha18CNlSixL6ZpmEHl90MprBB6y0t2WjtzsH0gpLY5ji+8C8CUAfwTgfeMyHwDwmfHnz46/Y3z/D6vCGRI921b3zJq341FYrn0JSUXJqKSfXv9PixA1aETpuXserLgfoL8Hzq9PK0PNdaNWLY+TAjIZNCXOLDejdMPkxFsnJKHpwmV4hORZy5rcaczriAz3nGRVVS+klD4N4M8ADAH8OYDnAfzvAD6ZUvqn42sfG1f5GIDfTCm9hCML8v0RZTlpSefiKOjElKzM0ja9gbbaKE3WROQ3hTVpo25hRC8+/vRZpXTy/WOJRKz2Obg+2llP7brUH8uy5NlYS3fa9zwudRawNN81UL2050v7IT0fXoeSm7Tp8OvU9abjJT17q395w8k/aRgd67qIPpvQYfKqqv4JgH/CLn8dwPcJZfcA/GSo9TEikzlCnLReZFJLbUtyp0WQ0yDQyDkzTwavR4mOW0PSJsQXndSWRJRZFrXwpOdUOvmpNUfbkfSSIM2trIfkDmoyrDamBW3eS6TCnwNw8v3vPFbcCufPLcuL6tHESi45cREN2zTBm+qNm6jFqGXPorKnMdin5dpak1Mr68ZcApNfas/b6YHjr7dxouTPSbJ26oK2E42jWde0DXk0GhURch1Y5EchEVsE2d2U/kaUZaE2gWaNlv752GmtVWsut4okmzyM0sGaNhE2ieFYdesuQG7Z0Pa4K6rFoyjBSCTsbQR0wVoWpaa/Z9Fb7Uq6RQlT0yfLoJAWmJT55fpZkLLfkj4RooyOs+Rd0D5IZClZpJL17WWgeVu0nhZKqQPaF/6MGsUkHxZKJq9V1upsnQXCJwQlDct9jupYN54abVNz+aVdnEPb1TUducurZbmt+nQBRMailLybECXXKcfPuLtv6VASVqBlNXeaQ7N4LSLi1yVr1LP0pXADb1PbaEpCCJKuFqRwToQYKVpDkhTS7hZNJFgypTaayABi5ya18p6LzydJJN5o6aO1XYc4pMVGCSKTR5ZP28xkqFkimmVmwdtsTtO6jOrI241CSox45aV4opUM88iVtx8haK2+RrJWGEmLX0uomyzT0EqSlNDU1fLkRnbGjAhZWWUj1qO323kLVLJoNJcqW4xeDM7S2Qqg8yyqNOZ8Y6wTkLeIn44DvefJLt2cNYLX3mqy5muJlcytvEh8UiIbL/4ZJWqtfl2UjFFpOe/ZtooktQxcHRkWogukBB5Bam3VTSpw+VJ57uZ45Sioq116yNhy8al7qlmSXF7Jc4ouGq39kvIR/U7D6rHaiBJa08PtTeKCdZJL0wbfNC20hiRPKxvMEV1w2qLRgsuW5SK1nx+MtThLrUXJNe90yn5tPV+j+nmB+EgfNIKkrnd0zC1d8vOIuNulrra2mOiRJvrdsrYtRLyhCElFCdLSK6JzHkeJ+LzkEi0TJU4rWab1OdepwzOtIckMLS4F6C5xRKYH+qCaxJoisCZSJrWIuxwJiEd0kSxra4Fz95n+3+kc//sydAHl75wspUUiJRS8OJgXd7QWCdWvrmvN9bGuSbJKEwoS6Bh6Fl8TcvTik5I+GZZLr8nSThXwsbLGzvOsNLSCJLVMsRbHseRQRGJ/9J6W8S11iS09vOMYeSy0BxrJjHMr1dpdPUQmOYU02enfz6ZtZ7LMz5oSKNWfypWysLRtK4Sg6VvXtZfgWUMWUUeSdB6iGXO+uXBoG+9poY77PY0ETaTdVpDkowQlIy2W55nq1sLkVpQGbkFackvcuIh1acUDpcXkLbAcfpDalchSS9pwlzyTKK1L9dBCBx7qZLibvDJXEs+LlpXai+jYJDapyeX6aPNf2qDqWuIRnbTrb6rETUYeLEpW3mKP7CrWYtCIiLpAVrysdJFZ7rTmbtN+SJBcVKlNrvfhof7DD9T95a4wvU9lW26oZnFbJE0tTg1170n68dBLnUUaWfwW6sbPaP1I+02TMLytSJu0TJ16EZmlpxIstJIkgeOdpdZGSV0JEatBIqsMy6rz3GrqRvN2NETeOrBiWV4ixCI+TR+pjDeuWoLLW6Al8eQ6dS1Z1jhEz+xNG5H5a+nET5Dk9RWNr06TvCVo6ybfs3igJGxSYmS1iiStoK1myQFl8UPPNaYyo+5uxM3Tss2RhRyZmJYcb0FrGeIsl1tZUmaSI5pE0jKVj+IsXh2U6lpSXstCl/SVu73Sc6Fem2eBWqGniPVm9b+O5RktG43VSmgNSUYGgMeg6sr3XOSSIzOe3pwQSwkyIjdazrNIaRker6Hxq2hmM8vPFmS32z1hpWuWDL/mEf003CqqM9fFwmkSJUWdzSAaD9cy4pJ3FAnn1AHvn2Y1P+xNsTUkaUFLNnhlIjHEaDKmlBxzXSsGV9dtqUPuGiLhg6i7w+VQCwV4I66puUU0y123PxR16+dfF8/PqMmzAh5ehhiIH0uSkl583KWjOpI8q7zWtrfZRZNpUWL2QmEWWkeS0ViP9gCm4ZJLdbQ26AOXCMdz1fm1aMCZj1NTQrFCHbxd6nZHZFoTXnKLoq68F2/1wOdQp3P002cHBwc4ODhAp9PBYDAIb4inGZ9s4i5SGZGYXl1Sn+YYZD1LdCrZwEvQGpKUjoZYrydGdppI3FGC5hZHLThqgdD7nNCi1q/Vlpf0icqKHNmQLMrSVxZ5fXo//5//8qE16alVGk1YSeQqtXF4eIj9/X0AR2PU7/fdPuayNF7HQxK0ndLEzzRcTDrOUfc7cj8aY5SsVYo6BBsl0jrHvDJaQ5IZEbM/l5tWexwWiUXilZKL1lTfqIVUkj3U+lcyobiLLIHKirweyGOenFwihCH1IWLNppTQ6/XQ7/dNGdKRoVw/97MNqHPuUItPatDKWYkiCinWnctq8OanFdYpRWtI0suo5jJNUBLWjTzgAAAMhklEQVTL86xHqaxHjlLiKeoeRN1qz7Kk48l34dxOJkqvHc/Sy+DEzF9J5K6VZ6VaJx1y/brILna3250km6S+etaop1cJEU3D1T5NlGSrNYLU4FmHgB0qmoYx1RqSzIvbsnS0CdU0HsdRSpC5feknxygk4ijNpFrlI/rmhc/leXUlkpbII5MsfVa83xpRZj0ihBN1sesgE2NUppcYybBIv+RYUJO4q0dSpW50U4LW5omkK0f02UTi3pas1pAkR9Tqq/OQvIRMJG6Zy1Hr0RroutZwdOFHiD2ldOKXtKluFjQyphOOv6PNXU8pFmnFJyVr0ouXTgt14sUe6HjwfpQcb5Pink1RauFJZSJkXxpblaxvrxwv29T1bgVJRtwnaYDoDsR3fm0RScdypAG0LDTalqW7tON6lrIVB42eaZTqSBZg1qd00kiuprdouQXLoY2PZG3Se1wfQB6vEhLK5U/LjbXI8jTbjhChFh+UZEyDqK26VkzZm7fSBqyV8yzzVpAkhzT40o7CFxRdhBrZSCRIy0tulnaN1tFicJolpMm2HhgdF+toESdE7y0KTTcL2iaSM9Mc+dnQRch1ltxuiSAtfaXxs04ETIOMLB2tBWqR4bRCS5GYsXQtet7SkxlBHbItyRVIayty0iSjNSRpTW5p8A4ODrC/v4/RaIRer4eFhQVxovLFLA2KlnjxrEpJP29RSG1yuaWQdkNpU5HifqV/wlNbuFk2d+W18ZL6TQ9xS/pKllBkU5F0AXDMAtbqlxzR8a5H3EXJotS8I03HUu+AhjUiMbppYtr5BEm+FvOMrr3WkKQVU5Amwu7uLu7fv48HDx5gcXERvV4Pg8HgWBmN3Dqdjkim3H32wgCRQLMkQ9KrbuxFk5evl06MumfxslyezMkLVopV8r7TxSoRHJdrhUQiiz0SH2tqdXLXmrdXSsQRorQIuzQLX1dGadnTBB0fbbzfVJaklG3NC4JaDqPRCPfu3cP29jaGwyGWl5cxGAyK3Gh6PYNmXXPbGoFZO3yJpWgRZNSllNrMn6kMmn3moAuZ61RyaFzKHkrQAupWzDNi4eS3Zui74tOA5dnQe3m8Ij/xluta50Ij4ZII2VrJQ2q1ekTi6cjbi4LKmVZiTopLl8Z8W0OSGdLOzRdKv9/HwsICzpw5g06ng6WlJfT7/cmi4FaEleCg4FnX/DnH2fhktx4kJSerPY9MLNcpQqBe7EmKX3K5dDz4ouffuVVI3XCJLOg4l7is1rgdHh69MdPv94+9LSPV4bJLrMvocRwvts4RIUpPhrW5a7Bi2Vy2Vrd0M6WInB2eVjigxM1vBUlKLinPmHICOnPmDPr9Pg4ODtDv9zE/P39ikVvumDbRq6o6dpRlNBqJbjiXa7nQGnHxySLFDiNjxftUAt5/z0qV3EX6WbOILJlZLnfLpX5yPaQy3W4X8/PzaiLP080K/dD2Jes2Z/G1sAFwcvOn5aIWJddLuq7dj1pSdRIqXnjBg5aU5XLqnMqgKKnbCpKUIE1GuqC73S4WFhYm5MitTUkW/ywhT6CIlWC51HzBa9CsGo1gpeuaa0TDFBqifbRISbKoLavMs7Aj4M+b9rHX66HX06e2l92P9Jn3jfd5GgkhbsFH+hBBaWzVI/C6crW6jyKOabXZOpL0JqhGKpoc6ZqVRJCgJXNoXS/WCdgTgVvKkk4aYWqyrLHT2rZIWyMlqT61prQ2Sy1fK1sdWVgRK9faUKNxspLYbMSqLSUNLTxRV4cmdbRy0T6fllutxcMltIYkPaWj2UqtvgVtwWrEpcU4tQcSCUZbZF3XOub1NOLyiI9f0ywlHhaJuESWZerVl1w7j5Skvmh6eLrSNiyLWWpPC02UJhUslLjb3rg10SlCqFo8nOpm6VdHJ+mzhNaQJHB8wkazehwS8ZRCc6MlctSSFsBJcpSSFFobGSXHFfhRB62eRtY5nubBsxIl4uFjYsVWNVla36ysKA2bWOSgwYrLWcQSsTolotTcaos8p0WqVI9o2YxIaMeDF4/m+vFNtO569zbj1pBkr9c7Ebyf5q5KwR8ubzeSUZasT40c6eeo9cjLSLpL5SLlvb5piFpqmrvn1ePlPavGWhRazNCL5Wqw5iLvW9S9tI7iWNDilFZbUdStS8fXipFb32n7XI5meTdN4ETQCpJM6ejcHj/XVmd38twn6Tp9SySTHycE/jkymSTLUXLXuS6ATXZWBtrSS7OKojuwli3W4pjUMuXnTzW9SuJRXnKNj5kXY/TIN5osi2wIp5WokLLAdepFjzdNA5rry3XKXPCwEzutIElAXxBNM2bWhKeyc1lpkvOFS89NRglHcq+jVo0V8+Tjpi3QyMIvgbSzW7rQEwi8r/SAuxaXyuDteNYUJ8ommX6vzTp1rQVfkvAoSVxZdfmaiKAOaVkhmdO2DCkibaXTcGdLkVK6B+Arj1qPAlwAcPtRK1GAN5u+wJtP55m+p4uHoe9/VFXVRX6xLZbkV6qqeuejViKKlNKfzvQ9XbzZdJ7pe7p4lPo+PLt2hhlmmOFNiBlJzjDDDDMYaAtJPv+oFSjETN/Tx5tN55m+p4tHpm8rEjczzDDDDG1FWyzJGWaYYYZWYkaSM8wwwwwGHjlJppR+LKX0lZTSSymljzxqfQAgpXQtpfRHKaUvp5T+MqX0s+Praymlf5dSenH8/7nx9ZRS+p/Hffh8Sul7HpHe3ZTSn6eUfnf8/emU0gtjfT+VUhqMr8+Nv780vv/UI9B1NaX06ZTSfxiP8w+2eXxTSv9wPBe+mFL6rZTSfJvGN6X0L1NKN1NKXyTXisczpfSBcfkXU0ofeAQ6/0/jOfH5lNK/SSmtknsfHev8lZTS3yLXT5dD8m8nPop/ALoAvgbgOoABgP8HwNsepU5jvS4D+J7x5zMAvgrgbQD+RwAfGV//CIBfHH9+D4D/A0AC8AMAXnhEev93AP5XAL87/v7bAN4//vxrAP7r8ef/BsCvjT+/H8CnHoGuHwfwX40/DwCstnV8AVwB8DKABTKuH2zT+AL46wC+B8AXybWi8QSwBuDr4//PjT+fe8g6/yiA3vjzLxKd3zbmhzkAT495o/swOOShLgxhkH4QwO+T7x8F8NFHqZOi52cA/E0cvRV0eXztMo4OwQPAvwDwU6T8pNxD1PEqgD8A8CMAfne8AG6TCTcZawC/D+AHx59743LpIeq6MiadxK63cnzHJPmtMXn0xuP7t9o2vgCeYoRTNJ4AfgrAvyDXj5V7GDqze/8ZgE+MPx/jhjzGD4NDHrW7nSdfxo3xtdZg7Cp9N4AXADxWVdWrADD+/9K4WBv68csA/hGA/CLteQAbVVUNBZ0m+o7vb47LPyxcB3ALwL8ahwd+PaW0hJaOb1VV3wbwzwD8FYBXcTRen0N7xzejdDzbMI8p/i6OLF7gEer8qElS+kWB1pxJSiktA/jXAP5BVVVbVlHh2kPrR0rpxwHcrKrqc/SyULQK3HsY6OHIzfrVqqq+G8A2jtxBDY96fM8BeC+O3LwnACwBeLeh06MeXw+afq3RO6X08wCGAD6RLwnFHorOj5okbwC4Rr5fBfDKI9LlGFJKfRwR5Ceqqvqd8eXXU0qXx/cvA7g5vv6o+/FDAH4ipfQNAJ/Ekcv9ywBWU0r5/Xyq00Tf8f2zAO4+RH1vALhRVdUL4++fxhFptnV8/waAl6uqulVV1QGA3wHw19De8c0oHc9HPc4AjpJHAH4cwE9XYx/a0O3UdX7UJPknAJ4ZZwkHOApyf/YR64SUUgLwMQBfrqrqn5NbnwWQM34fwFGsMl//L8dZwx8AsJndnIeBqqo+WlXV1aqqnsLRGP5hVVU/DeCPALxP0Tf3433j8g/NYqiq6jUA30opPTu+9C4AX0JLxxdHbvYPpJQWx3Mj69vK8SUoHc/fB/CjKaVzY+v5R8fXHhpSSj8G4OcA/ERVVTvk1mcBvH98cuBpAM8A+L/xMDjktIPJgcDte3CUPf4agJ9/1PqMdfpPcGSyfx7AX4z/vQdHcaU/APDi+P+1cfkE4H8Z9+ELAN75CHX/YbyR3b4+nkgvAfjfAMyNr8+Pv780vn/9Eej5HwP40/EY/1scZVNbO74A/gcA/wHAFwH8Jo6yrK0ZXwC/haN46QGOrKvn6ownjuKAL43//cwj0PklHMUY87r7NVL+58c6fwXAu8n1U+WQ2WuJM8wwwwwGHrW7PcMMM8zQasxIcoYZZpjBwIwkZ5hhhhkMzEhyhhlmmMHAjCRnmGGGGQzMSHKGGWaYwcCMJGeYYYYZDPy/X/bmGJMbwQMAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "(985, 1312)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#selecting initial point\n", "import matplotlib.pyplot as plt\n", "import matplotlib.patches as patches\n", "from PIL import Image\n", "\n", "k0=0\n", "in_fns = glob(\"./pictures/*.jpg\") # Names of files\n", "in_fns = sorted(in_fns) # Order them\n", "fig,ax = plt.subplots(1)\n", "(xi,yi,xf,yf)=(0,0,3280,2464)\n", "#(xi,yi,xf,yf)=(0,800,1200,1700)\n", "img0A = cv2.imread(in_fns[k0])[yi:yf,xi:xf]\n", "img0B = cv2.imread(in_fns[k0+1])[yi:yf,xi:xf]\n", "img0C = cv2.imread(in_fns[k0+2])[yi:yf,xi:xf]\n", "img0D = cv2.imread(in_fns[k0+3])[yi:yf,xi:xf]\n", "#img0 = cv2.imread(in_fns[0])[yi:yf,xi:xf]\n", "#ax.imshow(img0)\n", "#plt.show()\n", "scale_percent=40\n", "width = int(img0A.shape[1] * scale_percent / 100)\n", "height = int(img0A.shape[0] * scale_percent / 100)\n", "dim = (width, height)\n", "img00A = cv2.GaussianBlur(cv2.cvtColor(cv2.resize(img0A, dim, interpolation = cv2.INTER_AREA), cv2.COLOR_BGR2GRAY), (21, 21), 0)\n", "img00B = cv2.GaussianBlur(cv2.cvtColor(cv2.resize(img0B, dim, interpolation = cv2.INTER_AREA), cv2.COLOR_BGR2GRAY), (21, 21), 0)\n", "img00C = cv2.GaussianBlur(cv2.cvtColor(cv2.resize(img0C, dim, interpolation = cv2.INTER_AREA), cv2.COLOR_BGR2GRAY), (21, 21), 0)\n", "img00D = cv2.GaussianBlur(cv2.cvtColor(cv2.resize(img0D, dim, interpolation = cv2.INTER_AREA), cv2.COLOR_BGR2GRAY), (21, 21), 0)\n", "ax.imshow(img00A,cmap='gray')\n", "plt.show()\n", "img00A.shape" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: UserWarning: DEPRECATED: skimage.measure.compare_ssim has been moved to skimage.metrics.structural_similarity. It will be removed from skimage.measure in version 0.18.\n", " \"\"\"Entry point for launching an IPython kernel.\n", "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:3: UserWarning: DEPRECATED: skimage.measure.compare_ssim has been moved to skimage.metrics.structural_similarity. It will be removed from skimage.measure in version 0.18.\n", " This is separate from the ipykernel package so we can avoid doing imports until\n", "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:5: UserWarning: DEPRECATED: skimage.measure.compare_ssim has been moved to skimage.metrics.structural_similarity. It will be removed from skimage.measure in version 0.18.\n", " \"\"\"\n" ] } ], "source": [ "(score, diff) = compare_ssim(img00A, img00B, full = True)\n", "diff = (diff * 255).astype(\"uint8\")\n", "(score2, diff2) = compare_ssim(img00B, img00C, full = True)\n", "diff2 = (diff2 * 255).astype(\"uint8\")\n", "(score3, diff3) = compare_ssim(img00C, img00D, full = True)\n", "diff3 = (diff3 * 255).astype(\"uint8\")\n", "thresh = cv2.threshold(diff, 0, 255, # Threshold to clean\n", " cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] \n", "thresh2 = cv2.threshold(diff2, 0, 255, # Threshold to clean\n", " cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] \n", "thresh3 = cv2.threshold(diff3, 0, 255, # Threshold to clean\n", " cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:24: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n" ] } ], "source": [ "img=thresh\n", "contours,hier = cv2.findContours(img.copy(),cv2.RETR_EXTERNAL,2)\n", "#plt.imshow(cv2.drawContours(img, contours, -1, (0,255,0), 3),cmap='gray')\n", "LENGTH=len(contours)\n", "status = np.zeros((LENGTH,1))\n", "for i,cnt1 in enumerate(contours):\n", " x = i \n", " if i != LENGTH-1:\n", " for j,cnt2 in enumerate(contours[i+1:]):\n", " x = x+1\n", " dist = find_if_close(cnt1,cnt2)\n", " if dist == True:\n", " val = min(status[i],status[x])\n", " status[x] = status[i] = val\n", " else:\n", " if status[x]==status[i]:\n", " status[x] = i+1\n", "\n", "unified = []\n", "maximum = int(status.max())+1\n", "for i in range(maximum):\n", " pos = np.where(status==i)[0]\n", " if pos.size != 0:\n", " cont = np.vstack(contours[i] for i in pos)\n", " hull = cv2.convexHull(cont)\n", " unified.append(hull)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:24: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n" ] } ], "source": [ "img=thresh2\n", "contours,hier = cv2.findContours(img.copy(),cv2.RETR_EXTERNAL,2)\n", "#plt.imshow(cv2.drawContours(img, contours, -1, (0,255,0), 3),cmap='gray')\n", "LENGTH=len(contours)\n", "status = np.zeros((LENGTH,1))\n", "for i,cnt1 in enumerate(contours):\n", " x = i \n", " if i != LENGTH-1:\n", " for j,cnt2 in enumerate(contours[i+1:]):\n", " x = x+1\n", " dist = find_if_close(cnt1,cnt2)\n", " if dist == True:\n", " val = min(status[i],status[x])\n", " status[x] = status[i] = val\n", " else:\n", " if status[x]==status[i]:\n", " status[x] = i+1\n", "\n", "unified2 = []\n", "maximum = int(status.max())+1\n", "for i in range(maximum):\n", " pos = np.where(status==i)[0]\n", " if pos.size != 0:\n", " cont = np.vstack(contours[i] for i in pos)\n", " hull = cv2.convexHull(cont)\n", " unified2.append(hull)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:24: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n" ] } ], "source": [ "img=thresh3\n", "contours,hier = cv2.findContours(img.copy(),cv2.RETR_EXTERNAL,2)\n", "#plt.imshow(cv2.drawContours(img, contours, -1, (0,255,0), 3),cmap='gray')\n", "LENGTH=len(contours)\n", "status = np.zeros((LENGTH,1))\n", "for i,cnt1 in enumerate(contours):\n", " x = i \n", " if i != LENGTH-1:\n", " for j,cnt2 in enumerate(contours[i+1:]):\n", " x = x+1\n", " dist = find_if_close(cnt1,cnt2)\n", " if dist == True:\n", " val = min(status[i],status[x])\n", " status[x] = status[i] = val\n", " else:\n", " if status[x]==status[i]:\n", " status[x] = i+1\n", "\n", "unified3 = []\n", "maximum = int(status.max())+1\n", "for i in range(maximum):\n", " pos = np.where(status==i)[0]\n", " if pos.size != 0:\n", " cont = np.vstack(contours[i] for i in pos)\n", " hull = cv2.convexHull(cont)\n", " unified3.append(hull)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "areamin=20000;\n", "positions0=[];\n", "areas0=[];\n", "ejes0=[];\n", "for i in range(0,len(unified)):\n", " if len(unified[i])>5:\n", " area=np.pi*cv2.fitEllipse(unified[i])[1][0]*cv2.fitEllipse(unified[i])[1][1]\n", " if area>areamin:\n", " positions0.append(cv2.fitEllipse(unified[i])[0])\n", " ejes0.append(cv2.fitEllipse(unified[i])[1])\n", " areas0.append(np.pi*cv2.fitEllipse(unified[i])[1][0]*cv2.fitEllipse(unified[i])[1][1])\n", "positions1=[];\n", "areas1=[];\n", "ejes1=[];\n", "for i in range(0,len(unified2)):\n", " if len(unified2[i])>5:\n", " area=np.pi*cv2.fitEllipse(unified2[i])[1][0]*cv2.fitEllipse(unified2[i])[1][1]\n", " if area>areamin:\n", " positions1.append(cv2.fitEllipse(unified2[i])[0])\n", " ejes1.append(cv2.fitEllipse(unified2[i])[1])\n", " areas1.append(np.pi*cv2.fitEllipse(unified2[i])[1][0]*cv2.fitEllipse(unified2[i])[1][1])\n", "positions2=[];\n", "areas2=[];\n", "ejes2=[];\n", "for i in range(0,len(unified3)):\n", " if len(unified3[i])>5:\n", " area=np.pi*cv2.fitEllipse(unified3[i])[1][0]*cv2.fitEllipse(unified3[i])[1][1]\n", " if area>areamin:\n", " positions2.append(cv2.fitEllipse(unified3[i])[0])\n", " ejes2.append(cv2.fitEllipse(unified3[i])[1])\n", " areas2.append(np.pi*cv2.fitEllipse(unified3[i])[1][0]*cv2.fitEllipse(unified3[i])[1][1])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD4CAYAAAAEhuazAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAARRUlEQVR4nO3df4zkd13H8eerd1A8FAq2WOnR2xIK8SqgMNbWqBBb4WqE0mKTlksgIebU0ERjjLY5NRJziaBRg1bIBjWgiw2SYIttPSmJ1BB+dK+UttejuK25dmnFLSpYToHSt3/M9+z0OnO7s7N7s3uf5yOZzMzn8/l+5/3J7Lz2u9/vd76bqkKS1JZTpl2AJOnEM/wlqUGGvyQ1yPCXpAYZ/pLUoK3TLmClTj/99JqZmZl2GZK0aRw4cODRqjpjWN+mCf+ZmRnm5+enXYYkbRpJDo/qc7ePJDXI8JekBhn+ktQgw1+SGmT4S1KDTurwn5uDmRk45ZT+/dzctCuSpI1h05zqOa65OdizB44c6T8/fLj/HGD37unVJUkbwUm75b9375PBf9SRI/12SWrdSRv+Dz44XrskteSkDf+zzx6vXZJactKG/759sG3bU9u2beu3S1LrTtrw370bZmdhxw5I+vezsx7slSQ4ic/2gX7QG/aS9HQn7Za/JGk0w1+SGmT4S1KDDH9JapDhL0kNMvwlqUGGvyQ1yPCXpAZNFP5JrkhyMMkTSXrH9F2bZCHJfUleP9C+q2tbSHLNJK8vSVqdSbf87wEuB24bbEyyE7gSOA/YBfxZki1JtgDXAZcAO4GrurGSpBNooss7VNUhgCTHdl0KXF9V3wT+NckCcH7Xt1BVD3TLXd+NvXeSOiRJ41mvff5nAQ8NPF/s2ka1D5VkT5L5JPNLS0vrUqgktWjZLf8ktwJnDunaW1U3jFpsSFsx/JdNjXrtqpoFZgF6vd7IcZKk8Swb/lV18SrWuwi8aOD5duDh7vGodknSCbJeu31uBK5McmqSc4Bzgc8BtwPnJjknyTPpHxS+cZ1qkCSNMNEB3ySXAX8CnAHclOTOqnp9VR1M8mH6B3IfB95RVd/plrka2A9sAf6iqg5ONANJ0thStTl2pfd6vZqfn592GZK0aSQ5UFW9YX1+w1eSGmT4S1KDDH9JapDhL0kNMvwlqUGGvyQ1yPCXpAYZ/pLUIMNfkhpk+EtSgwx/SWqQ4S9JDTL8JalBhr8kNcjwl6QGGf6S1CDDX5IaZPhLUoMMf0lqkOEvSQ0y/CWpQYa/JDXI8JekBhn+ktQgw1+SGmT4S1KDDH9JapDhL0kNMvwlqUEThX+SK5IcTPJEkt5A+08nOZDk7u7+pwb6Xt21LyR5T5JMUoMkaXyTbvnfA1wO3HZM+6PAG6rq5cDbgL8a6HsvsAc4t7vtmrAGSdKYtk6ycFUdAjh2472qPj/w9CDwrCSnAs8HnlNVn+6W+yDwJuCWSeqQJI3nROzzfzPw+ar6JnAWsDjQt9i1DZVkT5L5JPNLS0vrXKYktWPZLf8ktwJnDunaW1U3LLPsecC7gNcdbRoyrEYtX1WzwCxAr9cbOU6SNJ5lw7+qLl7NipNsBz4KvLWq7u+aF4HtA8O2Aw+vZv2SpNVbl90+SU4DbgKurapPHW2vqkeA/05yQXeWz1uB4/71IElae5Oe6nlZkkXgQuCmJPu7rquBlwC/leTO7vaCru+XgPcDC8D9eLBXkk64VG2OXem9Xq/m5+enXYYkbRpJDlRVb1if3/CVpAYZ/pLUIMNfkhpk+EtSgwx/SWqQ4S9JDTL8JalBhr8kNcjwl6QGGf6S1CDDX5IaZPhLUoMMf0lqkOEvSQ0y/CWpQYa/JDXI8JfWw9wczMzAKaf07+fmpl2R9BTL/gN3SWOam4M9e+DIkf7zw4f7zwF2755eXdIAt/yltbZ375PBf9SRI/12aYMw/KW19uCD47VLU2D4S2vt7LPHa5emwPCX1tq+fbBt21Pbtm3rt0sbhOEvrbXdu2F2FnbsgKR/PzvrwV5tKJ7tI62H3bsNe21obvlLUoMMf0lqkOEvSQ0y/CWpQYa/JDVoovBPckWSg0meSNIb0n92kseS/NpA264k9yVZSHLNJK8vSVqdSbf87wEuB24b0f9HwC1HnyTZAlwHXALsBK5KsnPCGiRJY5roPP+qOgSQ5Gl9Sd4EPAB8Y6D5fGChqh7oxlwPXArcO0kdkqTxrMs+/yTPBn4DeOcxXWcBDw08X+zaRq1nT5L5JPNLS0trX6gkNWrZ8E9ya5J7htwuPc5i7wT+qKoeO3Z1Q8bWqJVU1WxV9aqqd8YZZyxXqiRphZbd7VNVF69ivT8K/FySdwOnAU8k+V/gAPCigXHbgYdXsX5J0gTW5do+VfUTRx8n+R3gsar60yRbgXOTnAN8GbgSeMt61CBJGm3SUz0vS7IIXAjclGT/8cZX1ePA1cB+4BDw4ao6OEkNkqTxpWrkLvcNpdfr1fz8/LTLkKRNI8mBqnrad7DAb/hKUpMMf0lqkOEvSQ0y/CWpQYa/JDXI8JekBhn+ktQgw1+SGmT4S1KDDH9JapDhL0kNMvwlqUGGvyQ1yPCXpAYZ/pLUIMNfkhpk+EtSgwx/SWqQ4S9JDTL8JalBhr8kNcjwl6QGGf6S1CDDX5IaZPhLUoMMf0lqkOEvSQ0y/CWpQYa/JDVoovBPckWSg0meSNI7pu8VST7d9d+d5Fld+6u75wtJ3pMkk9QgSRrfpFv+9wCXA7cNNibZCvw18ItVdR7wWuDbXfd7gT3Aud1t14Q1SJLGNFH4V9WhqrpvSNfrgLuq6gvduK9W1XeSfD/wnKr6dFUV8EHgTZPUIEka33rt838pUEn2J7kjya937WcBiwPjFru2oZLsSTKfZH5paWmdSpWk9mxdbkCSW4Ezh3TtraobjrPeHwd+BDgCfCLJAeDrQ8bWqNeuqllgFqDX640cJ0kaz7LhX1UXr2K9i8Anq+pRgCQ3A6+ifxxg+8C47cDDq1i/JGkC67XbZz/wiiTbuoO/rwHurapHgP9OckF3ls9bgVF/PUiS1smkp3pelmQRuBC4Kcl+gKr6T+APgduBO4E7quqmbrFfAt4PLAD3A7dMUoMkaXzpn3Sz8fV6vZqfn592GZK0aSQ5UFW9YX1+w1eSGmT4S1KDDH9JapDhL0kNMvwlqUGGvyQ1yPCXpAYZ/pLUIMNfkhpk+EtSgwx/SWqQ4S9JDTL8JalBhr8kNcjwl6QGGf6S1CDDX5IaZPhLUoMMf0lqkOEvSQ0y/CWpQYa/JDXI8JekBhn+ktQgw1+SGmT4S1KDDH9JapDhL0kNMvwlqUEThX+SK5IcTPJEkt5A+zOSfCDJ3UkOJbl2oG9XkvuSLCS5ZpLXlyStzqRb/vcAlwO3HdN+BXBqVb0ceDXwC0lmkmwBrgMuAXYCVyXZOWENkqQxbZ1k4ao6BJDkaV3As5NsBb4L+BbwdeB8YKGqHuiWux64FLh3kjokSeNZr33+HwG+ATwCPAj8QVX9B3AW8NDAuMWubagke5LMJ5lfWlpap1IlqT3LbvknuRU4c0jX3qq6YcRi5wPfAV4IPA/45249T/sTgf5fCUNV1SwwC9Dr9UaOkySNZ9nwr6qLV7HetwD/UFXfBv49yaeAHv2t/hcNjNsOPLyK9UuSJrBeu30eBH4qfc8GLgC+CNwOnJvknCTPBK4EblynGiRJI0x6qudlSRaBC4Gbkuzvuq4Dvpv+2UC3A39ZVXdV1ePA1cB+4BDw4ao6OEkNkqTxTXq2z0eBjw5pf4z+6Z7DlrkZuHmS15UkTcZv+EpSgwx/SWqQ4S9JDTL8JalBhr8kNcjwl6QGGf6S1CDDX5IaZPhLUoMMf0lqkOEvSQ0y/CWpQYa/JDXI8JekBhn+ktQgw1+SGmT4S1KDDH9JapDhL0kNMvwlqUGGvyQ1yPCXpA1o7u45Zv54hlPeeQozfzzD3N1za7r+rWu6NknSxObunmPPx/Zw5NtHADj8tcPs+dgeAHa/fPeavIZb/pK0wez9xN7/D/6jjnz7CHs/sXfNXsPwl6QN5sGvPThW+2oY/pK0wZz93LPHal8Nw1+SNph9F+1j2zO2PaVt2zO2se+ifWv2Goa/JG0wu1++m9k3zLLjuTsIYcdzdzD7htk1O9gLkKpas5Wtp16vV/Pz89MuQ5I2jSQHqqo3rG+iLf8kv5/ki0nuSvLRJKcN9F2bZCHJfUleP9C+q2tbSHLNJK8vSVqdSXf7fBz4wap6BfAl4FqAJDuBK4HzgF3AnyXZkmQLcB1wCbATuKobK0k6gSYK/6r6x6p6vHv6GWB79/hS4Pqq+mZV/SuwAJzf3Raq6oGq+hZwfTdWknQCreUB37cDt3SPzwIeGuhb7NpGtQ+VZE+S+STzS0tLa1iqJLVt2cs7JLkVOHNI196quqEbsxd4HDh68YkMGV8M/2Uz8ohzVc0Cs9A/4LtcrZKklVk2/Kvq4uP1J3kb8LPARfXkqUOLwIsGhm0HHu4ej2o/rgMHDjya5PBKxq6D04FHp/Ta68H5bFwn01zA+UzbjlEdE53qmWQX8IfAa6pqaaD9POBD9PfxvxD4BHAu/b8IvgRcBHwZuB14S1UdXHURJ0CS+VGnS21GzmfjOpnmAs5nI5v0qp5/CpwKfDwJwGeq6her6mCSDwP30t8d9I6q+g5AkquB/cAW4C82evBL0sloovCvqpccp28f8LTvIlfVzcDNk7yuJGkyXt5hZWanXcAacz4b18k0F3A+G9amubyDJGntuOUvSQ0y/CWpQYY/kOS0JB/pLlJ3KMmFSV6Z5NNJ7k7ysSTP6cbOJPmfJHd2t/dNu/5BSV42UNudSb6e5FeSPD/Jx5P8S3f/vG58krynu9DeXUleNe05DFrFfF6b5GsD43972nMYdJz5XJHkYJInkvSOWWboRRI3gnHns5E/P8eZy9gXsNwUqqr5G/AB4Oe7x88ETqP/HYTXdG1vB363ezwD3DPtmlc4ry3Av9H/ose7gWu69muAd3WPf4b+ZTkCXAB8dtp1Tzif1wJ/P+1aVzGfHwBeBvwT0BsYsxP4Av1Tqs8B7ge2TLv2CeazKT4/x8zldcDWrv1dAz9rm+a9GXZrfsu/26L/SeDPAarqW1X1X/R/cG/rhn0cePN0KpzIRcD9VXWY/gX0PtC1fwB4U/f4UuCD1fcZ4LQk33/iS12RlcxnM/n/+VTVoaq6b8iYURdJ3IhWMp/NYnAu417AclNoPvyBFwNLwF8m+XyS9yd5NnAP8MZuzBU89bIU53RjP5nkJ05wveO4Evib7vH3VdUjAN39C7r2sS62N2UrmQ/AhUm+kOSW7tvmG9XgfEbZrO/P8WyGz8+ouazkApabguHf/6Lbq4D3VtUPA9+gvxvh7cA7khwAvgf4Vjf+EeDsbuyvAh86ejxgI0nyTPq/vP52uaFD2jbc+b9jzOcOYEdVvRL4E+Dv1ru21Wj4/dnwn59Rc8nKL2C5KRj+/d/Wi1X12e75R4BXVdUXq+p1VfVq+lsA9wN0f+J9tXt8oGt/6RTqXs4lwB1V9ZXu+VeO7s7p7v+9az/eRfg2khXNp6q+XlWPdY9vBp6R5PRpFLyMY+czymZ9f4baJJ+fp80lT17Acnd1O/zZPO/NUM2Hf1X9G/BQkpd1TRcB9yZ5AUCSU4DfBN7XPT8j/f9IRpIX079g3QMnvPDlXcVT/2y9EXhb9/htwA0D7W/tzvq5APja0d0pG8yK5pPkzKR/oakk59P/Gf/qCaxzpY6dzyg3AlcmOTXJOfR/3j63rpWtzorms0k+P0+ZS/oXsPwN4I1VdWRg3GZ5b4ab9hHnjXADfgiYB+6iv5vgecAv078C6ZeA3+PJb0O/GThI/yj/HcAbpl3/kPlsox94zx1o+176V1f9l+7++V176P9rzfuBuxk4M2Oj3Macz9UD789ngB+bdv0rnM9l9Lckvwl8Bdg/0Le3e3/uAy6Zdv2TzGejf35GzGWB/r79O7vb+zbLe3O8m5d3kKQGNb/bR5JaZPhLUoMMf0lqkOEvSQ0y/CWpQYa/JDXI8JekBv0foPEX977cwOYAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(np.transpose(positions0)[0],-np.transpose(positions0)[1],'bo')\n", "plt.plot(np.transpose(positions1)[0],-np.transpose(positions1)[1],'ro')\n", "plt.plot(np.transpose(positions2)[0],-np.transpose(positions2)[1],'go')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(693.4310302734375, 91.69354248046875)]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dmin=20;\n", "clst0=[];\n", "for i in range(0,len(positions0)):\n", " distmin0=ejes0[i][1]/2;\n", " for j in range(0,len(positions1)):\n", " distmin1=ejes1[j][1]/2;\n", " dist=distance.euclidean(positions0[i],positions1[j])\n", " if dmin0.9:\n", " j.append(i);\n", "clst=[];\n", "size=[];\n", "for i in range(0,len(j)):\n", " clst.append(clst1[j[i]])\n", " size.append(size1[j[i]])\n", "#initial points DDD:\n", "heads=[i[0] for i in clst]\n", "heads" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#now we start with a the nhead head\n", "nhead=0;\n", "fig,ax = plt.subplots(1)\n", "h,w=1*size[nhead],1*size[nhead]\n", "xmin=heads[nhead][0]-(w/2)\n", "ymin=heads[nhead][1]-(h/4)\n", "rect = patches.Rectangle((xmin,ymin),w,h,linewidth=1,edgecolor='r',facecolor='none')\n", "# Add the patch to the Axes\n", "ax.imshow(img00A,cmap='gray')\n", "ax.add_patch(rect)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "in_fns = glob(\"./pictures/*.jpg\") # Names of files\n", "in_fns = sorted(in_fns) # Order them\n", "imgAll=[];\n", "img0 = cv2.imread(in_fns[0])[yi:yf,xi:xf]\n", "scale_percent=40\n", "width = int(img0.shape[1] * scale_percent / 100)\n", "height = int(img0.shape[0] * scale_percent / 100)\n", "dim = (width, height)\n", "img00 = cv2.resize(img0, dim, interpolation = cv2.INTER_AREA)\n", "imgAll.append(img00)\n", "for i in range(1,len(in_fns)):\n", " img0 = cv2.imread(in_fns[i])[yi:yf,xi:xf]\n", " img00 = cv2.resize(img0, dim, interpolation = cv2.INTER_AREA)\n", " imgAll.append(img00)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 (560, 25) (826, 291)\n", "1 (599, 106) (813, 320)\n", "2 (659, 213) (838, 392)\n", "3 (620, 256) (834, 470)\n", "4 (683, 386) (832, 534)\n", "5 (695, 427) (873, 606)\n", "6 (743, 534) (891, 683)\n", "7 (817, 594) (941, 718)\n", "8 (825, 691) (928, 794)\n", "9 (860, 764) (963, 868)\n", "10 (887, 835) (990, 939)\n", "11 (232, 555) (292, 615)\n" ] } ], "source": [ "if __name__ == '__main__' :\n", " \n", " tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE', 'CSRT']\n", " tracker_type = tracker_types[3]\n", " \n", " if tracker_type == 'BOOSTING':\n", " tracker = cv2.TrackerBoosting_create()\n", " if tracker_type == 'MIL':\n", " tracker = cv2.TrackerMIL_create()\n", " if tracker_type == 'KCF':\n", " tracker = cv2.TrackerKCF_create()\n", " if tracker_type == 'TLD':\n", " tracker = cv2.TrackerTLD_create()\n", " if tracker_type == 'MEDIANFLOW':\n", " tracker = cv2.TrackerMedianFlow_create()\n", " if tracker_type == 'GOTURN':\n", " tracker = cv2.TrackerGOTURN_create()\n", " if tracker_type == 'MOSSE':\n", " tracker = cv2.TrackerMOSSE_create()\n", " if tracker_type == \"CSRT\":\n", " tracker = cv2.TrackerCSRT_create()\n", " \n", " height , width , layers = imgAll[0].shape\n", " Data = np.zeros([len(imgAll),2])\n", " video = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 20, (width, height))\n", "\n", " \n", " img = cv2.cvtColor(imgAll[0], cv2.COLOR_BGR2GRAY)\n", " frame = cv2.GaussianBlur(img, (21, 21), 0)\n", " bbox = (xmin, ymin, w, h)\n", " #bbox = cv2.selectROI(frame, False)\n", " \n", " # Initialize tracker with first frame and bounding box\n", " ok = tracker.init(frame, bbox)\n", " Data[0]=bbox[0]+bbox[2]/2,bbox[1]+bbox[3]/2\n", " p1 = (int(bbox[0]), int(bbox[1]))\n", " p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3]))\n", " cv2.rectangle(imgAll[0], p1, p2, (0,255,0), 2, 1)\n", " print(0,p1,p2) \n", " video.write(imgAll[0])\n", " \n", " for m in range(1,len(imgAll)):\n", " img = cv2.cvtColor(imgAll[m], cv2.COLOR_BGR2GRAY)\n", " frame = cv2.GaussianBlur(img, (21, 21), 0)\n", " ok, bbox = tracker.update(frame)\n", " if ok:\n", " # Tracking success\n", " p1 = (int(bbox[0]), int(bbox[1]))\n", " p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3]))\n", " #cv2.rectangle(frame, p1, p2, (255,0,0), 2, 1)\n", " else :\n", " #Tracking failure\n", " print('Tracking failure detected')\n", " np.savez('data', Data)\n", " video.release()\n", " sys.exit()\n", " #assign final value\n", " Data[m] = np.array([(p1[0]+p2[0])/2,(p1[1]+p2[1])/2])\n", " cv2.rectangle(imgAll[m], p1, p2, (0,255,0), 2, 1)\n", " print(m,p1,p2) \n", " video.write(imgAll[m])\n", "\n", " np.savez('data', Data)\n", " video.release()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Data2=Data[0:11]\n", "plt.title('Tracking')\n", "plt.xlabel('x')\n", "plt.ylabel('y')\n", "plt.plot(np.transpose(Data2)[0],-np.transpose(Data2)[1],'o')" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "(74.11915546887121, 12.237347939324959)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vel=[]\n", "scale=1400\n", "for i in range(1,len(Data2)-1):\n", " dist=distance.euclidean((Data2[i][0],Data2[i][1]),(Data2[i+1][0],Data2[i+1][1]))\n", " dist2=dist*(100000/(2*scale*scale_percent))\n", " vel.append(dist2)\n", "plt.ylim(0, 1000)\n", "plt.plot(vel)\n", "plt.title('Velocity vs. time')\n", "plt.xlabel('time (min)')\n", "plt.ylabel('v (µm/min)')\n", "plt.show()\n", "np.mean(vel),np.std(vel)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "Mismatch between array dtype ('object') and format specifier ('%.18e')", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m~/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36msavetxt\u001b[0;34m(fname, X, fmt, delimiter, newline, header, footer, comments, encoding)\u001b[0m\n\u001b[1;32m 1433\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1434\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mformat\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrow\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mnewline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1435\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: must be real number, not list", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#ncase,nData,Size,Time,meanV,meanStd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mncase\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mData2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msavetxt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'data'\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mncase\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m'.dat'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m<__array_function__ internals>\u001b[0m in \u001b[0;36msavetxt\u001b[0;34m(*args, **kwargs)\u001b[0m\n", "\u001b[0;32m~/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36msavetxt\u001b[0;34m(fname, X, fmt, delimiter, newline, header, footer, comments, encoding)\u001b[0m\n\u001b[1;32m 1436\u001b[0m raise TypeError(\"Mismatch between array dtype ('%s') and \"\n\u001b[1;32m 1437\u001b[0m \u001b[0;34m\"format specifier ('%s')\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1438\u001b[0;31m % (str(X.dtype), format))\n\u001b[0m\u001b[1;32m 1439\u001b[0m \u001b[0mfh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1440\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: Mismatch between array dtype ('object') and format specifier ('%.18e')" ] } ], "source": [ "#ncase,nData,Size,Time,meanV,meanStd\n", "data=[ncase,len(Data2),size,time,np.mean(vel),np.std(vel)]\n", "np.savetxt('data'+str(ncase)+'.dat', data)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "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.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }