├── num_arr.npy ├── images ├── 9bbd4bf71c11e7c8149485d9f1ec5adbs.png ├── da4554c01a8c0563bf7fc106c3934722s.png └── e72ac241b410eac63a652dc1349521fds.png ├── image.ipynb └── .ipynb_checkpoints └── image-checkpoint.ipynb /num_arr.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaussic/ziroom_crack/master/num_arr.npy -------------------------------------------------------------------------------- /images/9bbd4bf71c11e7c8149485d9f1ec5adbs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaussic/ziroom_crack/master/images/9bbd4bf71c11e7c8149485d9f1ec5adbs.png -------------------------------------------------------------------------------- /images/da4554c01a8c0563bf7fc106c3934722s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaussic/ziroom_crack/master/images/da4554c01a8c0563bf7fc106c3934722s.png -------------------------------------------------------------------------------- /images/e72ac241b410eac63a652dc1349521fds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaussic/ziroom_crack/master/images/e72ac241b410eac63a652dc1349521fds.png -------------------------------------------------------------------------------- /image.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 23, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "from PIL import Image\n", 10 | "import random\n", 11 | "import matplotlib.pyplot as plt\n", 12 | "import numpy as np\n", 13 | "\n", 14 | "%matplotlib inline" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 142, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "image = Image.open('images/9bbd4bf71c11e7c8149485d9f1ec5adbs.png').convert('L')" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 143, 29 | "metadata": {}, 30 | "outputs": [ 31 | { 32 | "data": { 33 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAAeCAAAAACz03y7AAACeUlEQVR4nO1ZW3LEIAxjmZyRQ/qU/dhkw8OSDGT7tZrpNI1t2TEGDE3phzBe7192/lmwpimpL7+YfWPuNyblzIPUUo/CFGrh0coNJmT0EUFlZSOzVU+zUi7mfleRO2qUFJGriNWgsyPlAQnbVRwftsJY13J14mLuxthaKbf1PZbzATF70uJoDq/8asyXtLx//A9fHJyO2QP0G4gqlUTW0XJLYfgkMR7y4N2hVLkK5JJHBKTYqPpKkMsS8AtzBazyKO0dy1RQBRjtECmkmU2lhbQW5ssxa/AdlOkRqmz3PE/oHt04gCDZKmzETuzcWMZLTm0oIUwuWClYWXriAztLV7Y29m/wUff4rYaH9QHzod3x5Ovx4Z22AC/o82lpIkYKq2t3M9KbAd6+hZYND0AhMGBEtLGqNdS7C/xz7fEKQFN6QxQmHeXRdrOyxMCxY0e9lOnuxNPQbeenz5/Duw8emR9oHWSu2PibPO6oTOKNWOZK9KMD815lGY3ldInG/zSk5wNWO6X77UYn73cYetOtZEWO1+TYEZ0ei+vz4hwkOO+zntkv2P2gN1s+7/hUZDNNxbXWEjc8t9q3jztLB+gHcC+XTOxLYFRZ3u/8C8arP5N3HQG++cGwIZiKY6uyKh7UQ5AJLncHbKvmZShX85nMDfsiSQS6ToLt2vB29monHgRqHYz7XULgBA2b0kjLWsXsXSuv32TVfmuWXPUxtnuQ8j1bItRUmOwTVSe+ey/nu/d7hspvjdfN3sThRqDGapB7JxwgFbZc7BUWs2ZVQfzm/s2jhdXeOvTU3K24sdiOGRkRv7l9h/8Ns4aKz2GmQmErjDcg/P7ww+P4A6S62kfJJcJvAAAAAElFTkSuQmCC\n", 34 | "text/plain": [ 35 | "" 36 | ] 37 | }, 38 | "execution_count": 143, 39 | "metadata": {}, 40 | "output_type": "execute_result" 41 | } 42 | ], 43 | "source": [ 44 | "image" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 182, 50 | "metadata": {}, 51 | "outputs": [], 52 | "source": [ 53 | "img_list = []\n", 54 | "for i in range(10):\n", 55 | " img = image.crop((i * 30, 0, (i+1) * 30, 30))\n", 56 | " img_list.append(img)" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 183, 62 | "metadata": {}, 63 | "outputs": [ 64 | { 65 | "data": { 66 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAAAAAAeW/F+AAAAgUlEQVR4nLWSTRaAIAiEldcZ55CcsoVBwoCbXmxKPkb+HONoc33Uzqiwbp4QIJmyWk3lP1FtzpR4YX0lyKmkLNjtisccJoeyXQ0PorEkdeQykmmDATAXh35x0XddGI2F+z7az7hb1q62XvN+JPi3l+H4nRXvdtKV/JDR0Sc3GvrRbg3AF5LhhEJYAAAAAElFTkSuQmCC\n", 67 | "text/plain": [ 68 | "" 69 | ] 70 | }, 71 | "execution_count": 183, 72 | "metadata": {}, 73 | "output_type": "execute_result" 74 | } 75 | ], 76 | "source": [ 77 | "random.choice(img_list)" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 176, 83 | "metadata": {}, 84 | "outputs": [ 85 | { 86 | "data": { 87 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAAAAAAeW/F+AAAAfElEQVR4nKVSQQ7AIAirxjfyyL5yB2cERFwmJ0OhbSpAWgUAaFqi3jXfPsBlcEsIfySPly+tnZ2bUJwHv02msCNrmpXL7LstMoX1UAmYlT2n7cP7EYsSbwC3HwJUEMk1HbUNsQ+mmvZyViNUQoJM5ylGxjq5bNGROWP0sh4BpxPhP7OjqQAAAABJRU5ErkJggg==\n", 88 | "text/plain": [ 89 | "" 90 | ] 91 | }, 92 | "execution_count": 176, 93 | "metadata": {}, 94 | "output_type": "execute_result" 95 | } 96 | ], 97 | "source": [ 98 | "img = random.choice(img_list)\n", 99 | "img" 100 | ] 101 | }, 102 | { 103 | "cell_type": "code", 104 | "execution_count": 186, 105 | "metadata": {}, 106 | "outputs": [], 107 | "source": [ 108 | "num_arr = np.zeros((10, 900))\n", 109 | "num_arr[0] = np.array(img_list[0]).flatten()\n", 110 | "num_arr[1] = np.array(img_list[1]).flatten()\n", 111 | "num_arr[2] = np.array(img_list[7]).flatten()\n", 112 | "num_arr[3] = np.array(img_list[5]).flatten()\n", 113 | "num_arr[4] = np.array(img_list[2]).flatten()\n", 114 | "num_arr[5] = np.array(img_list[9]).flatten()\n", 115 | "num_arr[6] = np.array(img_list[6]).flatten()\n", 116 | "num_arr[7] = np.array(img_list[8]).flatten()\n", 117 | "num_arr[8] = np.array(img_list[3]).flatten()\n", 118 | "num_arr[9] = np.array(img_list[4]).flatten()" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 192, 124 | "metadata": {}, 125 | "outputs": [], 126 | "source": [ 127 | "np.save('num_arr', num_arr)" 128 | ] 129 | }, 130 | { 131 | "cell_type": "code", 132 | "execution_count": 193, 133 | "metadata": {}, 134 | "outputs": [], 135 | "source": [ 136 | "num_arr = np.load('num_arr.npy')" 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 197, 142 | "metadata": {}, 143 | "outputs": [ 144 | { 145 | "data": { 146 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAAeCAAAAACz03y7AAAClUlEQVR4nO1ZW27EMAh0o5zRh/Qp+5Gsg52ZAZzd9meRqkYBhjHxA7OlfCUsP+a5lVJKBUbt/I90l4nyZP4auXtDNfVt8wthIpFn7Y6MmW+j6brzi0gzTzyRpZSmtJzVWmAed4NGzJnZPM0VgniizQROIO/k/WxfVQSqogvbeEnkrgVzi/oOpsDgNaLjYULurIB2K44c463HH87L2rw6STHkKW6elTVEgcn7zurUWuierMCIyS7seEY2FG1DtBFglCvzjmS6kgCvZMkRW6/ZcHla3cYROMSQKCNKjjo1ZRU5Df9Aai7nKWuVzdw5ul/RIeEx04Sk3qOFOFzxrl68CTmqZgxNVTLaAwCOcPxmsZPFUG3llS3/pM8WWjXGag68BwJKwDDPhdrRq7Sdj8yHZYrSDKl+Gi6MJCv3oTWuGgnpXD3hnlnFu7Z/h9TPh4DirxdUlE7+g2yLqz4sR9V4L/CGGsc9Wpz1lv8WpOy8hRzycp6Gn8mVQWUHaWNHqbp22AAPDjdZsYBcle2oGjTmO+Qe4nyjpoXz/aU2VGY7xemk3v5jNznFrb3ZtSOMsiwwV/c6C3TxUser5jAi9VXgVLW6vhfaVeI4V5+97oDEj/LBOfNgxVzb5SRei8brDXlBR5fY/TWA3BYOwDD48Q9w3etk9Qd7vQmnbxsPtKUwdO/OznPlN/+MPyeAJTkrnTvmolb75Ho4oWS9WrtJRtaJzFpalOobtFfQ+lzNiFBbGX84N1m9jmmLq7R1X6gtCrlJtUHO0LoqM1qdEbjA74ayeWhs0HAAyyjwNBLUGxas5JcVgWW7NrAMK3kOiO4caODRd9YHehLi94iIEZDIntXx4A8t2vXyAL5S6flqZ4fWA9+vfOXt8guzwNpHOAvL+gAAAABJRU5ErkJggg==\n", 147 | "text/plain": [ 148 | "" 149 | ] 150 | }, 151 | "execution_count": 197, 152 | "metadata": {}, 153 | "output_type": "execute_result" 154 | } 155 | ], 156 | "source": [ 157 | "image = Image.open('images/e72ac241b410eac63a652dc1349521fds.png').convert('L')\n", 158 | "image" 159 | ] 160 | }, 161 | { 162 | "cell_type": "code", 163 | "execution_count": 198, 164 | "metadata": {}, 165 | "outputs": [], 166 | "source": [ 167 | "img_list = []\n", 168 | "for i in range(10):\n", 169 | " img = image.crop((i * 30, 0, (i+1) * 30, 30))\n", 170 | " img_list.append(img)" 171 | ] 172 | }, 173 | { 174 | "cell_type": "code", 175 | "execution_count": 210, 176 | "metadata": {}, 177 | "outputs": [ 178 | { 179 | "data": { 180 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAAAAAAeW/F+AAAAgUlEQVR4nLWSTRaAIAiEldcZ55CcsoVBwoCbXmxKPkb+HONoc33Uzqiwbp4QIJmyWk3lP1FtzpR4YX0lyKmkLNjtisccJoeyXQ0PorEkdeQykmmDATAXh35x0XddGI2F+z7az7hb1q62XvN+JPi3l+H4nRXvdtKV/JDR0Sc3GvrRbg3AF5LhhEJYAAAAAElFTkSuQmCC\n", 181 | "text/plain": [ 182 | "" 183 | ] 184 | }, 185 | "execution_count": 210, 186 | "metadata": {}, 187 | "output_type": "execute_result" 188 | } 189 | ], 190 | "source": [ 191 | "img = random.choice(img_list)\n", 192 | "img" 193 | ] 194 | }, 195 | { 196 | "cell_type": "code", 197 | "execution_count": 211, 198 | "metadata": {}, 199 | "outputs": [ 200 | { 201 | "name": "stdout", 202 | "output_type": "stream", 203 | "text": [ 204 | "[1501.399347275734, 2978.6406295489896, 2538.6413689215733, 1877.7113729218343, 2660.9208932247498, 1530.0, 0.0, 2844.644090215857, 1501.399347275734, 1923.3304448274093]\n", 205 | "6\n" 206 | ] 207 | } 208 | ], 209 | "source": [ 210 | "img_arr = np.array(img).flatten()\n", 211 | "dist = [np.linalg.norm(img_arr-x) for x in num_arr]\n", 212 | "print(dist)\n", 213 | "print(np.argmin(dist))" 214 | ] 215 | }, 216 | { 217 | "cell_type": "code", 218 | "execution_count": 218, 219 | "metadata": {}, 220 | "outputs": [], 221 | "source": [ 222 | "def get_digit(img_file, num_arr):\n", 223 | " digit_list = []\n", 224 | " image = Image.open(img_file).convert('L')\n", 225 | " for i in range(10):\n", 226 | " img = image.crop((i * 30, 0, (i+1) * 30, 30))\n", 227 | " img_arr = np.array(img).flatten()\n", 228 | " dist = [np.linalg.norm(img_arr-x) for x in num_arr]\n", 229 | " digit_list.append(np.argmin(dist))\n", 230 | " return digit_list" 231 | ] 232 | }, 233 | { 234 | "cell_type": "code", 235 | "execution_count": 220, 236 | "metadata": {}, 237 | "outputs": [ 238 | { 239 | "data": { 240 | "text/plain": [ 241 | "[4, 0, 1, 5, 9, 8, 3, 7, 6, 2]" 242 | ] 243 | }, 244 | "execution_count": 220, 245 | "metadata": {}, 246 | "output_type": "execute_result" 247 | } 248 | ], 249 | "source": [ 250 | "get_digit(\"images/e72ac241b410eac63a652dc1349521fds.png\", num_arr)" 251 | ] 252 | }, 253 | { 254 | "cell_type": "code", 255 | "execution_count": 221, 256 | "metadata": {}, 257 | "outputs": [ 258 | { 259 | "data": { 260 | "text/plain": [ 261 | "array([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 262 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 263 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170,\n", 264 | " 170, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0,\n", 265 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 266 | " 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 0,\n", 267 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 268 | " 0, 0, 0, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,\n", 269 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 270 | " 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 0,\n", 271 | " 0, 0, 170, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 272 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170,\n", 273 | " 170, 170, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 0,\n", 274 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 275 | " 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 170,\n", 276 | " 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 277 | " 0, 0, 0, 0, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 278 | " 0, 0, 0, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 279 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 0,\n", 280 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 281 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170,\n", 282 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 283 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 284 | " 0, 0, 170, 170, 170, 170, 0, 0, 170, 170, 170, 170, 170,\n", 285 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 286 | " 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 170,\n", 287 | " 170, 170, 170, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 288 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170,\n", 289 | " 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,\n", 290 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 291 | " 0, 170, 170, 170, 170, 170, 170, 170, 170, 0, 0, 0, 170,\n", 292 | " 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0,\n", 293 | " 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 0, 0,\n", 294 | " 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 0, 0, 0,\n", 295 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170,\n", 296 | " 170, 170, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170,\n", 297 | " 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 298 | " 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0,\n", 299 | " 0, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0,\n", 300 | " 0, 0, 0, 0, 170, 170, 170, 170, 170, 0, 0, 0, 0,\n", 301 | " 0, 0, 0, 0, 0, 170, 170, 170, 170, 0, 0, 0, 0,\n", 302 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170,\n", 303 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170,\n", 304 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,\n", 305 | " 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 306 | " 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 307 | " 0, 0, 0, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 308 | " 0, 0, 0, 0, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 309 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 0,\n", 310 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 0,\n", 311 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,\n", 312 | " 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 170, 170,\n", 313 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 314 | " 0, 0, 0, 170, 170, 170, 170, 170, 170, 0, 0, 0, 0,\n", 315 | " 0, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0,\n", 316 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170,\n", 317 | " 170, 0, 0, 0, 170, 170, 170, 170, 170, 170, 0, 0, 0,\n", 318 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 319 | " 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,\n", 320 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 321 | " 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 170, 170,\n", 322 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 323 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170,\n", 324 | " 170, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0,\n", 325 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 326 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 327 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 328 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 329 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 330 | " 0, 0, 0], dtype=uint8)" 331 | ] 332 | }, 333 | "execution_count": 221, 334 | "metadata": {}, 335 | "output_type": "execute_result" 336 | } 337 | ], 338 | "source": [ 339 | "img_arr = np.array(img)\n", 340 | "img_arr.flatten()" 341 | ] 342 | }, 343 | { 344 | "cell_type": "code", 345 | "execution_count": 137, 346 | "metadata": {}, 347 | "outputs": [ 348 | { 349 | "data": { 350 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAACj0lEQVR4nOXWT4hWVRjH8c8RkUFmEYExjMPgaoKE0UUMNfgHIiIigywlcdGRxChp48aFSAuRYDYVtCnILmIRlDSzMhDGgcCFgpSEuIgWIYPUEDIMIsPQdXHv2DOv88479x3BhQ+88Nzfub/zPfe+53nO5TFFajdQFkZxCDvQjw2YwTX8hHMpW3hk4LLQi2/wdgfvH9iXsl/XDC4LG3AJo0FewA3cxRCeDmNz2J2ya03B61quT7VAz2Jzyral7EVswnv1IqAX5+sFN4oHT1wWNuIfbKyl71N2YDlTWXgVF4L0fsq+agKOT7wrQOF429VmP2MySHuaQFvBgyGfSdlfHbyXQ75lLeDZkPeswrs+5PfWAr4Z8t66jleKl9p4m4HrerwSxj6vN9xDURaOYCRIXzYFt9bxiKqOF4G/4ySmVDU7hA/wYVj0Fyn7aE3gGr5d1bm2d/DO4nTKxppCebiBwHV8Qsddfab+dRWtr3oIP2A4yHdVm2deVTZ9YewOjqbsu67BZWEAV8PEs6omciZl8+G+UXxq6eZ6N2VnuwVP4I0A3Zmy68uZysJ6TOC1WprDsymbXi14XT3RIF4P+sl2UKjP4YOqV011WBxdLfQBWNWnF/MFFJ2MKbuDH4P0cjfg/qBNp7ykfa4Uv4V8Szfg+AnT5GyNvv+6Ad8KWl9ZLCmZlWJryFe9sSJ4ytIVH+5krPv4/iBNtru3LThlf2M86CfKwvMdvF/jmTpfqK+bges47v8zuQe/lIVjZeGpaCgLw2XhIt4J8mcpNzsaW1vmK6rGED8E5vEn/lV9pQy0zDGOt1JutrnanU7f4rkO3nsYS9nHTYBtwWEBe/EmXlD9lz2qp76Ji6oefrsb6JMZ9wFto6KnAMhbRwAAAABJRU5ErkJggg==\n", 351 | "text/plain": [ 352 | "" 353 | ] 354 | }, 355 | "execution_count": 137, 356 | "metadata": {}, 357 | "output_type": "execute_result" 358 | } 359 | ], 360 | "source": [ 361 | "img1 = random.choice(img_list)\n", 362 | "img1" 363 | ] 364 | }, 365 | { 366 | "cell_type": "code", 367 | "execution_count": 138, 368 | "metadata": {}, 369 | "outputs": [ 370 | { 371 | "data": { 372 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAuklEQVR4nO3UsYkCQRSA4W/lsAYDQyNLUMHEQjY0E+zByMxD4ylAoyvgEkE4uE2swTYckz0w2EPFMRDmjyYY5uO9YHiHYrCOQYzB4dm3Wg+gA0yfBR+CY9DF7t77SeAa/UYnFXoTjsEIv+ilROHjH7CFORZop0ZpmDgGExyxvEIrrF4K4wv9+nzGBkOcUsKNq66rMCtKe4ghJdsM/+CzKG3TUjfgojR+JfhXsg8hwxnOcIYznOEM5+7uAsPLI19RIKUzAAAAAElFTkSuQmCC\n", 373 | "text/plain": [ 374 | "" 375 | ] 376 | }, 377 | "execution_count": 138, 378 | "metadata": {}, 379 | "output_type": "execute_result" 380 | } 381 | ], 382 | "source": [ 383 | "img2 = random.choice(img_list)\n", 384 | "img2" 385 | ] 386 | }, 387 | { 388 | "cell_type": "code", 389 | "execution_count": 139, 390 | "metadata": {}, 391 | "outputs": [ 392 | { 393 | "data": { 394 | "text/plain": [ 395 | "5738.7421095567624" 396 | ] 397 | }, 398 | "execution_count": 139, 399 | "metadata": {}, 400 | "output_type": "execute_result" 401 | } 402 | ], 403 | "source": [ 404 | "dist = np.linalg.norm(np.array(img1).flatten()-np.array(img2).flatten())\n", 405 | "dist" 406 | ] 407 | }, 408 | { 409 | "cell_type": "code", 410 | "execution_count": null, 411 | "metadata": {}, 412 | "outputs": [], 413 | "source": [] 414 | }, 415 | { 416 | "cell_type": "code", 417 | "execution_count": 16, 418 | "metadata": {}, 419 | "outputs": [ 420 | { 421 | "name": "stderr", 422 | "output_type": "stream", 423 | "text": [ 424 | "C:\\Users\\dzkan\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", 425 | " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n" 426 | ] 427 | }, 428 | { 429 | "data": { 430 | "image/png": "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\n", 431 | "text/plain": [ 432 | "
" 433 | ] 434 | }, 435 | "metadata": {}, 436 | "output_type": "display_data" 437 | } 438 | ], 439 | "source": [ 440 | "n, bins, patches = plt.hist(img_flat, bins=256, normed=1, facecolor='green', alpha=0.75) " 441 | ] 442 | }, 443 | { 444 | "cell_type": "code", 445 | "execution_count": null, 446 | "metadata": {}, 447 | "outputs": [], 448 | "source": [ 449 | "image.crop((0,0,30,30))" 450 | ] 451 | } 452 | ], 453 | "metadata": { 454 | "kernelspec": { 455 | "display_name": "Python 3", 456 | "language": "python", 457 | "name": "python3" 458 | }, 459 | "language_info": { 460 | "codemirror_mode": { 461 | "name": "ipython", 462 | "version": 3 463 | }, 464 | "file_extension": ".py", 465 | "mimetype": "text/x-python", 466 | "name": "python", 467 | "nbconvert_exporter": "python", 468 | "pygments_lexer": "ipython3", 469 | "version": "3.6.5" 470 | } 471 | }, 472 | "nbformat": 4, 473 | "nbformat_minor": 2 474 | } 475 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/image-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 23, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "from PIL import Image\n", 10 | "import random\n", 11 | "import matplotlib.pyplot as plt\n", 12 | "import numpy as np\n", 13 | "\n", 14 | "%matplotlib inline" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 142, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "image = Image.open('images/9bbd4bf71c11e7c8149485d9f1ec5adbs.png').convert('L')" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 143, 29 | "metadata": {}, 30 | "outputs": [ 31 | { 32 | "data": { 33 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAAeCAAAAACz03y7AAACeUlEQVR4nO1ZW3LEIAxjmZyRQ/qU/dhkw8OSDGT7tZrpNI1t2TEGDE3phzBe7192/lmwpimpL7+YfWPuNyblzIPUUo/CFGrh0coNJmT0EUFlZSOzVU+zUi7mfleRO2qUFJGriNWgsyPlAQnbVRwftsJY13J14mLuxthaKbf1PZbzATF70uJoDq/8asyXtLx//A9fHJyO2QP0G4gqlUTW0XJLYfgkMR7y4N2hVLkK5JJHBKTYqPpKkMsS8AtzBazyKO0dy1RQBRjtECmkmU2lhbQW5ssxa/AdlOkRqmz3PE/oHt04gCDZKmzETuzcWMZLTm0oIUwuWClYWXriAztLV7Y29m/wUff4rYaH9QHzod3x5Ovx4Z22AC/o82lpIkYKq2t3M9KbAd6+hZYND0AhMGBEtLGqNdS7C/xz7fEKQFN6QxQmHeXRdrOyxMCxY0e9lOnuxNPQbeenz5/Duw8emR9oHWSu2PibPO6oTOKNWOZK9KMD815lGY3ldInG/zSk5wNWO6X77UYn73cYetOtZEWO1+TYEZ0ei+vz4hwkOO+zntkv2P2gN1s+7/hUZDNNxbXWEjc8t9q3jztLB+gHcC+XTOxLYFRZ3u/8C8arP5N3HQG++cGwIZiKY6uyKh7UQ5AJLncHbKvmZShX85nMDfsiSQS6ToLt2vB29monHgRqHYz7XULgBA2b0kjLWsXsXSuv32TVfmuWXPUxtnuQ8j1bItRUmOwTVSe+ey/nu/d7hspvjdfN3sThRqDGapB7JxwgFbZc7BUWs2ZVQfzm/s2jhdXeOvTU3K24sdiOGRkRv7l9h/8Ns4aKz2GmQmErjDcg/P7ww+P4A6S62kfJJcJvAAAAAElFTkSuQmCC\n", 34 | "text/plain": [ 35 | "" 36 | ] 37 | }, 38 | "execution_count": 143, 39 | "metadata": {}, 40 | "output_type": "execute_result" 41 | } 42 | ], 43 | "source": [ 44 | "image" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 182, 50 | "metadata": {}, 51 | "outputs": [], 52 | "source": [ 53 | "img_list = []\n", 54 | "for i in range(10):\n", 55 | " img = image.crop((i * 30, 0, (i+1) * 30, 30))\n", 56 | " img_list.append(img)" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 183, 62 | "metadata": {}, 63 | "outputs": [ 64 | { 65 | "data": { 66 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAAAAAAeW/F+AAAAgUlEQVR4nLWSTRaAIAiEldcZ55CcsoVBwoCbXmxKPkb+HONoc33Uzqiwbp4QIJmyWk3lP1FtzpR4YX0lyKmkLNjtisccJoeyXQ0PorEkdeQykmmDATAXh35x0XddGI2F+z7az7hb1q62XvN+JPi3l+H4nRXvdtKV/JDR0Sc3GvrRbg3AF5LhhEJYAAAAAElFTkSuQmCC\n", 67 | "text/plain": [ 68 | "" 69 | ] 70 | }, 71 | "execution_count": 183, 72 | "metadata": {}, 73 | "output_type": "execute_result" 74 | } 75 | ], 76 | "source": [ 77 | "random.choice(img_list)" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 176, 83 | "metadata": {}, 84 | "outputs": [ 85 | { 86 | "data": { 87 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAAAAAAeW/F+AAAAfElEQVR4nKVSQQ7AIAirxjfyyL5yB2cERFwmJ0OhbSpAWgUAaFqi3jXfPsBlcEsIfySPly+tnZ2bUJwHv02msCNrmpXL7LstMoX1UAmYlT2n7cP7EYsSbwC3HwJUEMk1HbUNsQ+mmvZyViNUQoJM5ylGxjq5bNGROWP0sh4BpxPhP7OjqQAAAABJRU5ErkJggg==\n", 88 | "text/plain": [ 89 | "" 90 | ] 91 | }, 92 | "execution_count": 176, 93 | "metadata": {}, 94 | "output_type": "execute_result" 95 | } 96 | ], 97 | "source": [ 98 | "img = random.choice(img_list)\n", 99 | "img" 100 | ] 101 | }, 102 | { 103 | "cell_type": "code", 104 | "execution_count": 186, 105 | "metadata": {}, 106 | "outputs": [], 107 | "source": [ 108 | "num_arr = np.zeros((10, 900))\n", 109 | "num_arr[0] = np.array(img_list[0]).flatten()\n", 110 | "num_arr[1] = np.array(img_list[1]).flatten()\n", 111 | "num_arr[2] = np.array(img_list[7]).flatten()\n", 112 | "num_arr[3] = np.array(img_list[5]).flatten()\n", 113 | "num_arr[4] = np.array(img_list[2]).flatten()\n", 114 | "num_arr[5] = np.array(img_list[9]).flatten()\n", 115 | "num_arr[6] = np.array(img_list[6]).flatten()\n", 116 | "num_arr[7] = np.array(img_list[8]).flatten()\n", 117 | "num_arr[8] = np.array(img_list[3]).flatten()\n", 118 | "num_arr[9] = np.array(img_list[4]).flatten()" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 192, 124 | "metadata": {}, 125 | "outputs": [], 126 | "source": [ 127 | "np.save('num_arr', num_arr)" 128 | ] 129 | }, 130 | { 131 | "cell_type": "code", 132 | "execution_count": 193, 133 | "metadata": {}, 134 | "outputs": [], 135 | "source": [ 136 | "num_arr = np.load('num_arr.npy')" 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 197, 142 | "metadata": {}, 143 | "outputs": [ 144 | { 145 | "data": { 146 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAAeCAAAAACz03y7AAAClUlEQVR4nO1ZW27EMAh0o5zRh/Qp+5Gsg52ZAZzd9meRqkYBhjHxA7OlfCUsP+a5lVJKBUbt/I90l4nyZP4auXtDNfVt8wthIpFn7Y6MmW+j6brzi0gzTzyRpZSmtJzVWmAed4NGzJnZPM0VgniizQROIO/k/WxfVQSqogvbeEnkrgVzi/oOpsDgNaLjYULurIB2K44c463HH87L2rw6STHkKW6elTVEgcn7zurUWuierMCIyS7seEY2FG1DtBFglCvzjmS6kgCvZMkRW6/ZcHla3cYROMSQKCNKjjo1ZRU5Df9Aai7nKWuVzdw5ul/RIeEx04Sk3qOFOFzxrl68CTmqZgxNVTLaAwCOcPxmsZPFUG3llS3/pM8WWjXGag68BwJKwDDPhdrRq7Sdj8yHZYrSDKl+Gi6MJCv3oTWuGgnpXD3hnlnFu7Z/h9TPh4DirxdUlE7+g2yLqz4sR9V4L/CGGsc9Wpz1lv8WpOy8hRzycp6Gn8mVQWUHaWNHqbp22AAPDjdZsYBcle2oGjTmO+Qe4nyjpoXz/aU2VGY7xemk3v5jNznFrb3ZtSOMsiwwV/c6C3TxUser5jAi9VXgVLW6vhfaVeI4V5+97oDEj/LBOfNgxVzb5SRei8brDXlBR5fY/TWA3BYOwDD48Q9w3etk9Qd7vQmnbxsPtKUwdO/OznPlN/+MPyeAJTkrnTvmolb75Ho4oWS9WrtJRtaJzFpalOobtFfQ+lzNiFBbGX84N1m9jmmLq7R1X6gtCrlJtUHO0LoqM1qdEbjA74ayeWhs0HAAyyjwNBLUGxas5JcVgWW7NrAMK3kOiO4caODRd9YHehLi94iIEZDIntXx4A8t2vXyAL5S6flqZ4fWA9+vfOXt8guzwNpHOAvL+gAAAABJRU5ErkJggg==\n", 147 | "text/plain": [ 148 | "" 149 | ] 150 | }, 151 | "execution_count": 197, 152 | "metadata": {}, 153 | "output_type": "execute_result" 154 | } 155 | ], 156 | "source": [ 157 | "image = Image.open('images/e72ac241b410eac63a652dc1349521fds.png').convert('L')\n", 158 | "image" 159 | ] 160 | }, 161 | { 162 | "cell_type": "code", 163 | "execution_count": 198, 164 | "metadata": {}, 165 | "outputs": [], 166 | "source": [ 167 | "img_list = []\n", 168 | "for i in range(10):\n", 169 | " img = image.crop((i * 30, 0, (i+1) * 30, 30))\n", 170 | " img_list.append(img)" 171 | ] 172 | }, 173 | { 174 | "cell_type": "code", 175 | "execution_count": 210, 176 | "metadata": {}, 177 | "outputs": [ 178 | { 179 | "data": { 180 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAAAAAAeW/F+AAAAgUlEQVR4nLWSTRaAIAiEldcZ55CcsoVBwoCbXmxKPkb+HONoc33Uzqiwbp4QIJmyWk3lP1FtzpR4YX0lyKmkLNjtisccJoeyXQ0PorEkdeQykmmDATAXh35x0XddGI2F+z7az7hb1q62XvN+JPi3l+H4nRXvdtKV/JDR0Sc3GvrRbg3AF5LhhEJYAAAAAElFTkSuQmCC\n", 181 | "text/plain": [ 182 | "" 183 | ] 184 | }, 185 | "execution_count": 210, 186 | "metadata": {}, 187 | "output_type": "execute_result" 188 | } 189 | ], 190 | "source": [ 191 | "img = random.choice(img_list)\n", 192 | "img" 193 | ] 194 | }, 195 | { 196 | "cell_type": "code", 197 | "execution_count": 211, 198 | "metadata": {}, 199 | "outputs": [ 200 | { 201 | "name": "stdout", 202 | "output_type": "stream", 203 | "text": [ 204 | "[1501.399347275734, 2978.6406295489896, 2538.6413689215733, 1877.7113729218343, 2660.9208932247498, 1530.0, 0.0, 2844.644090215857, 1501.399347275734, 1923.3304448274093]\n", 205 | "6\n" 206 | ] 207 | } 208 | ], 209 | "source": [ 210 | "img_arr = np.array(img).flatten()\n", 211 | "dist = [np.linalg.norm(img_arr-x) for x in num_arr]\n", 212 | "print(dist)\n", 213 | "print(np.argmin(dist))" 214 | ] 215 | }, 216 | { 217 | "cell_type": "code", 218 | "execution_count": 218, 219 | "metadata": {}, 220 | "outputs": [], 221 | "source": [ 222 | "def get_digit(img_file, num_arr):\n", 223 | " digit_list = []\n", 224 | " image = Image.open(img_file).convert('L')\n", 225 | " for i in range(10):\n", 226 | " img = image.crop((i * 30, 0, (i+1) * 30, 30))\n", 227 | " img_arr = np.array(img).flatten()\n", 228 | " dist = [np.linalg.norm(img_arr-x) for x in num_arr]\n", 229 | " digit_list.append(np.argmin(dist))\n", 230 | " return digit_list" 231 | ] 232 | }, 233 | { 234 | "cell_type": "code", 235 | "execution_count": 220, 236 | "metadata": {}, 237 | "outputs": [ 238 | { 239 | "data": { 240 | "text/plain": [ 241 | "[4, 0, 1, 5, 9, 8, 3, 7, 6, 2]" 242 | ] 243 | }, 244 | "execution_count": 220, 245 | "metadata": {}, 246 | "output_type": "execute_result" 247 | } 248 | ], 249 | "source": [ 250 | "get_digit(\"images/e72ac241b410eac63a652dc1349521fds.png\", num_arr)" 251 | ] 252 | }, 253 | { 254 | "cell_type": "code", 255 | "execution_count": 221, 256 | "metadata": {}, 257 | "outputs": [ 258 | { 259 | "data": { 260 | "text/plain": [ 261 | "array([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 262 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 263 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170,\n", 264 | " 170, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0,\n", 265 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 266 | " 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 0,\n", 267 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 268 | " 0, 0, 0, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,\n", 269 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 270 | " 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 0,\n", 271 | " 0, 0, 170, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 272 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170,\n", 273 | " 170, 170, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 0,\n", 274 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 275 | " 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 170,\n", 276 | " 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 277 | " 0, 0, 0, 0, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 278 | " 0, 0, 0, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 279 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 0,\n", 280 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 281 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170,\n", 282 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 283 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 284 | " 0, 0, 170, 170, 170, 170, 0, 0, 170, 170, 170, 170, 170,\n", 285 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 286 | " 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 170,\n", 287 | " 170, 170, 170, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 288 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170,\n", 289 | " 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,\n", 290 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 291 | " 0, 170, 170, 170, 170, 170, 170, 170, 170, 0, 0, 0, 170,\n", 292 | " 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0,\n", 293 | " 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 0, 0,\n", 294 | " 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 0, 0, 0,\n", 295 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170,\n", 296 | " 170, 170, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170,\n", 297 | " 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 298 | " 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0,\n", 299 | " 0, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0,\n", 300 | " 0, 0, 0, 0, 170, 170, 170, 170, 170, 0, 0, 0, 0,\n", 301 | " 0, 0, 0, 0, 0, 170, 170, 170, 170, 0, 0, 0, 0,\n", 302 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170,\n", 303 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170,\n", 304 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,\n", 305 | " 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 306 | " 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 307 | " 0, 0, 0, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 308 | " 0, 0, 0, 0, 170, 170, 170, 170, 0, 0, 0, 0, 0,\n", 309 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 0,\n", 310 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 0,\n", 311 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,\n", 312 | " 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 170, 170,\n", 313 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 314 | " 0, 0, 0, 170, 170, 170, 170, 170, 170, 0, 0, 0, 0,\n", 315 | " 0, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0,\n", 316 | " 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, 170,\n", 317 | " 170, 0, 0, 0, 170, 170, 170, 170, 170, 170, 0, 0, 0,\n", 318 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 319 | " 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,\n", 320 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 321 | " 0, 0, 0, 0, 0, 170, 170, 170, 170, 170, 170, 170, 170,\n", 322 | " 170, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 323 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 170,\n", 324 | " 170, 170, 170, 170, 170, 170, 0, 0, 0, 0, 0, 0, 0,\n", 325 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 326 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 327 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 328 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 329 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 330 | " 0, 0, 0], dtype=uint8)" 331 | ] 332 | }, 333 | "execution_count": 221, 334 | "metadata": {}, 335 | "output_type": "execute_result" 336 | } 337 | ], 338 | "source": [ 339 | "img_arr = np.array(img)\n", 340 | "img_arr.flatten()" 341 | ] 342 | }, 343 | { 344 | "cell_type": "code", 345 | "execution_count": 137, 346 | "metadata": {}, 347 | "outputs": [ 348 | { 349 | "data": { 350 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAACj0lEQVR4nOXWT4hWVRjH8c8RkUFmEYExjMPgaoKE0UUMNfgHIiIigywlcdGRxChp48aFSAuRYDYVtCnILmIRlDSzMhDGgcCFgpSEuIgWIYPUEDIMIsPQdXHv2DOv88479x3BhQ+88Nzfub/zPfe+53nO5TFFajdQFkZxCDvQjw2YwTX8hHMpW3hk4LLQi2/wdgfvH9iXsl/XDC4LG3AJo0FewA3cxRCeDmNz2J2ya03B61quT7VAz2Jzyral7EVswnv1IqAX5+sFN4oHT1wWNuIfbKyl71N2YDlTWXgVF4L0fsq+agKOT7wrQOF429VmP2MySHuaQFvBgyGfSdlfHbyXQ75lLeDZkPeswrs+5PfWAr4Z8t66jleKl9p4m4HrerwSxj6vN9xDURaOYCRIXzYFt9bxiKqOF4G/4ySmVDU7hA/wYVj0Fyn7aE3gGr5d1bm2d/DO4nTKxppCebiBwHV8Qsddfab+dRWtr3oIP2A4yHdVm2deVTZ9YewOjqbsu67BZWEAV8PEs6omciZl8+G+UXxq6eZ6N2VnuwVP4I0A3Zmy68uZysJ6TOC1WprDsymbXi14XT3RIF4P+sl2UKjP4YOqV011WBxdLfQBWNWnF/MFFJ2MKbuDH4P0cjfg/qBNp7ykfa4Uv4V8Szfg+AnT5GyNvv+6Ad8KWl9ZLCmZlWJryFe9sSJ4ytIVH+5krPv4/iBNtru3LThlf2M86CfKwvMdvF/jmTpfqK+bges47v8zuQe/lIVjZeGpaCgLw2XhIt4J8mcpNzsaW1vmK6rGED8E5vEn/lV9pQy0zDGOt1JutrnanU7f4rkO3nsYS9nHTYBtwWEBe/EmXlD9lz2qp76Ji6oefrsb6JMZ9wFto6KnAMhbRwAAAABJRU5ErkJggg==\n", 351 | "text/plain": [ 352 | "" 353 | ] 354 | }, 355 | "execution_count": 137, 356 | "metadata": {}, 357 | "output_type": "execute_result" 358 | } 359 | ], 360 | "source": [ 361 | "img1 = random.choice(img_list)\n", 362 | "img1" 363 | ] 364 | }, 365 | { 366 | "cell_type": "code", 367 | "execution_count": 138, 368 | "metadata": {}, 369 | "outputs": [ 370 | { 371 | "data": { 372 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAuklEQVR4nO3UsYkCQRSA4W/lsAYDQyNLUMHEQjY0E+zByMxD4ylAoyvgEkE4uE2swTYckz0w2EPFMRDmjyYY5uO9YHiHYrCOQYzB4dm3Wg+gA0yfBR+CY9DF7t77SeAa/UYnFXoTjsEIv+ilROHjH7CFORZop0ZpmDgGExyxvEIrrF4K4wv9+nzGBkOcUsKNq66rMCtKe4ghJdsM/+CzKG3TUjfgojR+JfhXsg8hwxnOcIYznOEM5+7uAsPLI19RIKUzAAAAAElFTkSuQmCC\n", 373 | "text/plain": [ 374 | "" 375 | ] 376 | }, 377 | "execution_count": 138, 378 | "metadata": {}, 379 | "output_type": "execute_result" 380 | } 381 | ], 382 | "source": [ 383 | "img2 = random.choice(img_list)\n", 384 | "img2" 385 | ] 386 | }, 387 | { 388 | "cell_type": "code", 389 | "execution_count": 139, 390 | "metadata": {}, 391 | "outputs": [ 392 | { 393 | "data": { 394 | "text/plain": [ 395 | "5738.7421095567624" 396 | ] 397 | }, 398 | "execution_count": 139, 399 | "metadata": {}, 400 | "output_type": "execute_result" 401 | } 402 | ], 403 | "source": [ 404 | "dist = np.linalg.norm(np.array(img1).flatten()-np.array(img2).flatten())\n", 405 | "dist" 406 | ] 407 | }, 408 | { 409 | "cell_type": "code", 410 | "execution_count": null, 411 | "metadata": {}, 412 | "outputs": [], 413 | "source": [] 414 | }, 415 | { 416 | "cell_type": "code", 417 | "execution_count": 16, 418 | "metadata": {}, 419 | "outputs": [ 420 | { 421 | "name": "stderr", 422 | "output_type": "stream", 423 | "text": [ 424 | "C:\\Users\\dzkan\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", 425 | " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n" 426 | ] 427 | }, 428 | { 429 | "data": { 430 | "image/png": "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\n", 431 | "text/plain": [ 432 | "
" 433 | ] 434 | }, 435 | "metadata": {}, 436 | "output_type": "display_data" 437 | } 438 | ], 439 | "source": [ 440 | "n, bins, patches = plt.hist(img_flat, bins=256, normed=1, facecolor='green', alpha=0.75) " 441 | ] 442 | }, 443 | { 444 | "cell_type": "code", 445 | "execution_count": null, 446 | "metadata": {}, 447 | "outputs": [], 448 | "source": [ 449 | "image.crop((0,0,30,30))" 450 | ] 451 | } 452 | ], 453 | "metadata": { 454 | "kernelspec": { 455 | "display_name": "Python 3", 456 | "language": "python", 457 | "name": "python3" 458 | }, 459 | "language_info": { 460 | "codemirror_mode": { 461 | "name": "ipython", 462 | "version": 3 463 | }, 464 | "file_extension": ".py", 465 | "mimetype": "text/x-python", 466 | "name": "python", 467 | "nbconvert_exporter": "python", 468 | "pygments_lexer": "ipython3", 469 | "version": "3.6.5" 470 | } 471 | }, 472 | "nbformat": 4, 473 | "nbformat_minor": 2 474 | } 475 | --------------------------------------------------------------------------------