{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "outputs": [],
   "source": [
    "import os\n",
    "from imutils import paths\n",
    "import cv2"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-03-29T16:23:19.528528400Z",
     "start_time": "2024-03-29T16:23:18.500152Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [
    "def variance_of_laplacian(image):\n",
    "\treturn cv2.Laplacian(image, cv2.CV_64F).var()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-03-29T16:23:23.429844400Z",
     "start_time": "2024-03-29T16:23:23.303709900Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Blurry 1\n",
      "Blurry 2\n",
      "Blurry 3\n",
      "Blurry 4\n",
      "Blurry 5\n",
      "Blurry 6\n",
      "Blurry 7\n",
      "Blurry 8\n",
      "Blurry 9\n",
      "Blurry 10\n",
      "Blurry 11\n",
      "Blurry 12\n",
      "Blurry 13\n",
      "Blurry 14\n",
      "Blurry 15\n",
      "Blurry 16\n",
      "Blurry 17\n",
      "Blurry 18\n",
      "Blurry 19\n",
      "Blurry 20\n",
      "Blurry 21\n",
      "Blurry 22\n",
      "Blurry 23\n",
      "Blurry 24\n",
      "Blurry 25\n",
      "Blurry 26\n",
      "Blurry 27\n",
      "Blurry 28\n",
      "Blurry 29\n",
      "Blurry 30\n",
      "Blurry 31\n",
      "Blurry 32\n",
      "Blurry 33\n",
      "Blurry 34\n",
      "Blurry 35\n",
      "Blurry 36\n",
      "Blurry 37\n",
      "Blurry 38\n",
      "Blurry 39\n",
      "Blurry 40\n",
      "Blurry 41\n",
      "Blurry 42\n",
      "Blurry 43\n",
      "Blurry 44\n",
      "Blurry 45\n",
      "Blurry 46\n",
      "Blurry 47\n",
      "Blurry 48\n",
      "Blurry 49\n",
      "Blurry 50\n",
      "Blurry 51\n",
      "Blurry 52\n",
      "Blurry 53\n",
      "Blurry 54\n",
      "Blurry 55\n",
      "Blurry 56\n",
      "Blurry 57\n",
      "Blurry 58\n",
      "Blurry 59\n",
      "Blurry 60\n",
      "Blurry 61\n",
      "Blurry 62\n",
      "Blurry 63\n",
      "Blurry 64\n",
      "Blurry 65\n",
      "Blurry 66\n",
      "Blurry 67\n",
      "Blurry 68\n",
      "Blurry 69\n",
      "Blurry 70\n",
      "Blurry 71\n",
      "Blurry 72\n",
      "Blurry 73\n",
      "Blurry 74\n",
      "Blurry 75\n",
      "Blurry 76\n",
      "Blurry 77\n",
      "Blurry 78\n",
      "Blurry 79\n",
      "Blurry 80\n",
      "Blurry 81\n",
      "Blurry 82\n",
      "Blurry 83\n",
      "Blurry 84\n",
      "Blurry 85\n",
      "Blurry 86\n",
      "Blurry 87\n",
      "Blurry 88\n",
      "Blurry 89\n",
      "Blurry 90\n",
      "Blurry 91\n",
      "Blurry 92\n",
      "Blurry 93\n",
      "Blurry 94\n",
      "Blurry 95\n",
      "Blurry 96\n",
      "Blurry 97\n",
      "Blurry 98\n",
      "Blurry 99\n",
      "Blurry 100\n",
      "Blurry 101\n",
      "Blurry 102\n",
      "Blurry 103\n",
      "Blurry 104\n",
      "Blurry 105\n",
      "Blurry 106\n",
      "Blurry 107\n",
      "Blurry 108\n",
      "Blurry 109\n",
      "Blurry 110\n",
      "Blurry 111\n",
      "Blurry 112\n",
      "Blurry 113\n",
      "Blurry 114\n",
      "Blurry 115\n",
      "Blurry 116\n",
      "Blurry 117\n",
      "Blurry 118\n",
      "Blurry 119\n",
      "Blurry 120\n",
      "Blurry 121\n",
      "Blurry 122\n",
      "Blurry 123\n",
      "Blurry 124\n",
      "Blurry 125\n",
      "Blurry 126\n",
      "Blurry 127\n",
      "Blurry 128\n",
      "Blurry 129\n",
      "Blurry 130\n",
      "Blurry 131\n",
      "Blurry 132\n",
      "Blurry 133\n",
      "Blurry 134\n",
      "Blurry 135\n",
      "Blurry 136\n",
      "Blurry 137\n",
      "Blurry 138\n",
      "Blurry 139\n",
      "Blurry 140\n",
      "Blurry 141\n",
      "Blurry 142\n",
      "Blurry 143\n",
      "Blurry 144\n",
      "Blurry 145\n",
      "Blurry 146\n",
      "Blurry 147\n",
      "Blurry 148\n",
      "Blurry 149\n",
      "Blurry 150\n",
      "Blurry 151\n",
      "Blurry 152\n",
      "Blurry 153\n",
      "Blurry 154\n",
      "Blurry 155\n",
      "Blurry 156\n",
      "Blurry 157\n",
      "Blurry 158\n",
      "Blurry 159\n",
      "Blurry 160\n",
      "Blurry 161\n",
      "Blurry 162\n",
      "Blurry 163\n",
      "Blurry 164\n",
      "Blurry 165\n",
      "Blurry 166\n",
      "Blurry 167\n",
      "Blurry 168\n",
      "Blurry 169\n",
      "Blurry 170\n",
      "Blurry 171\n",
      "Blurry 172\n",
      "Blurry 173\n",
      "Blurry 174\n",
      "Blurry 175\n",
      "Blurry 176\n",
      "Blurry 177\n",
      "Blurry 178\n",
      "Blurry 179\n",
      "Blurry 180\n",
      "Blurry 181\n",
      "Blurry 182\n",
      "Blurry 183\n",
      "Blurry 184\n",
      "Blurry 185\n",
      "Blurry 186\n",
      "Blurry 187\n",
      "Blurry 188\n",
      "Blurry 189\n",
      "Blurry 190\n",
      "Blurry 191\n",
      "Blurry 192\n",
      "Blurry 193\n",
      "Blurry 194\n",
      "Blurry 195\n",
      "Blurry 196\n",
      "Blurry 197\n",
      "Blurry 198\n",
      "Blurry 199\n",
      "Blurry 200\n",
      "Blurry 201\n",
      "Blurry 202\n",
      "Blurry 203\n",
      "Blurry 204\n",
      "Blurry 205\n",
      "Blurry 206\n",
      "Blurry 207\n",
      "Blurry 208\n",
      "Blurry 209\n",
      "Blurry 210\n",
      "Blurry 211\n",
      "Blurry 212\n",
      "Blurry 213\n",
      "Blurry 214\n",
      "Blurry 215\n",
      "Blurry 216\n",
      "Blurry 217\n",
      "Blurry 218\n",
      "Blurry 219\n",
      "Blurry 220\n",
      "Blurry 221\n",
      "Blurry 222\n",
      "Blurry 223\n",
      "Blurry 224\n",
      "Blurry 225\n",
      "Blurry 226\n",
      "Blurry 227\n",
      "Blurry 228\n",
      "Blurry 229\n",
      "Blurry 230\n",
      "Blurry 231\n",
      "Blurry 232\n",
      "Blurry 233\n",
      "Blurry 234\n",
      "Blurry 235\n",
      "Blurry 236\n",
      "Blurry 237\n",
      "Blurry 238\n",
      "Blurry 239\n",
      "Blurry 240\n",
      "Blurry 241\n",
      "Blurry 242\n",
      "Blurry 243\n",
      "Blurry 244\n",
      "Blurry 245\n",
      "Blurry 246\n",
      "Blurry 247\n",
      "Blurry 248\n",
      "Blurry 249\n",
      "Blurry 250\n",
      "Blurry 251\n",
      "Blurry 252\n",
      "Blurry 253\n",
      "Blurry 254\n",
      "Blurry 255\n",
      "Blurry 256\n",
      "Blurry 257\n",
      "Blurry 258\n",
      "Blurry 259\n",
      "Blurry 260\n",
      "Blurry 261\n",
      "Blurry 262\n",
      "Blurry 263\n",
      "Blurry 264\n",
      "Blurry 265\n",
      "Blurry 266\n",
      "Blurry 267\n",
      "Blurry 268\n",
      "Blurry 269\n",
      "Blurry 270\n",
      "Blurry 271\n",
      "Blurry 272\n",
      "Blurry 273\n",
      "Blurry 274\n",
      "Blurry 275\n",
      "Blurry 276\n",
      "Blurry 277\n",
      "Blurry 278\n",
      "Blurry 279\n",
      "Blurry 280\n",
      "Blurry 281\n",
      "Blurry 282\n",
      "Blurry 283\n",
      "Blurry 284\n",
      "Blurry 285\n",
      "Blurry 286\n",
      "Blurry 287\n",
      "Blurry 288\n",
      "Blurry 289\n",
      "Blurry 290\n",
      "Blurry 291\n",
      "Blurry 292\n",
      "Blurry 293\n",
      "Blurry 294\n",
      "Blurry 295\n",
      "Blurry 296\n",
      "Blurry 297\n",
      "Blurry 298\n",
      "Blurry 299\n",
      "Blurry 300\n",
      "Blurry 301\n",
      "Blurry 302\n",
      "Blurry 303\n",
      "Blurry 304\n",
      "Blurry 305\n",
      "Blurry 306\n",
      "Blurry 307\n",
      "Blurry 308\n",
      "Blurry 309\n",
      "Blurry 310\n",
      "Blurry 311\n",
      "Blurry 312\n",
      "Blurry 313\n",
      "Blurry 314\n",
      "Blurry 315\n",
      "Blurry 316\n",
      "Blurry 317\n",
      "Blurry 318\n",
      "Blurry 319\n",
      "Blurry 320\n",
      "Blurry 321\n",
      "Blurry 322\n",
      "Blurry 323\n",
      "Blurry 324\n",
      "Blurry 325\n",
      "Blurry 326\n",
      "Blurry 327\n",
      "Blurry 328\n",
      "Blurry 329\n",
      "Blurry 330\n",
      "Blurry 331\n",
      "Blurry 332\n",
      "Blurry 333\n",
      "Blurry 334\n",
      "Blurry 335\n",
      "Blurry 336\n",
      "Blurry 337\n",
      "Blurry 338\n",
      "Blurry 339\n",
      "Blurry 340\n",
      "Blurry 341\n",
      "Blurry 342\n",
      "Blurry 343\n",
      "Blurry 344\n",
      "Blurry 345\n",
      "Blurry 346\n",
      "Blurry 347\n",
      "Blurry 348\n",
      "Blurry 349\n",
      "Blurry 350\n",
      "Blurry 351\n",
      "Blurry 352\n",
      "Blurry 353\n",
      "Blurry 354\n",
      "Blurry 355\n",
      "Blurry 356\n",
      "Blurry 357\n",
      "Blurry 358\n",
      "Blurry 359\n",
      "Blurry 360\n",
      "Blurry 361\n",
      "Blurry 362\n",
      "Blurry 363\n",
      "Blurry 364\n",
      "Blurry 365\n",
      "Blurry 366\n",
      "Blurry 367\n",
      "Blurry 368\n",
      "Blurry 369\n",
      "Blurry 370\n",
      "Blurry 371\n",
      "Blurry 372\n",
      "Blurry 373\n",
      "Blurry 374\n",
      "Blurry 375\n",
      "Blurry 376\n",
      "Blurry 377\n",
      "Blurry 378\n",
      "Blurry 379\n",
      "Blurry 380\n",
      "Blurry 381\n",
      "Blurry 382\n",
      "Blurry 383\n",
      "Blurry 384\n",
      "Blurry 385\n",
      "Blurry 386\n",
      "Blurry 387\n",
      "Blurry 388\n",
      "Blurry 389\n",
      "Blurry 390\n",
      "Blurry 391\n",
      "Blurry 392\n",
      "Blurry 393\n",
      "Blurry 394\n",
      "Blurry 395\n",
      "Blurry 396\n",
      "Blurry 397\n",
      "Blurry 398\n",
      "Blurry 399\n",
      "Blurry 400\n",
      "Blurry 401\n",
      "Blurry 402\n",
      "Blurry 403\n",
      "Blurry 404\n",
      "Blurry 405\n",
      "Blurry 406\n",
      "Blurry 407\n",
      "Blurry 408\n",
      "Blurry 409\n",
      "Blurry 410\n",
      "Blurry 411\n",
      "Blurry 412\n",
      "Blurry 413\n",
      "Blurry 414\n",
      "Blurry 415\n",
      "Blurry 416\n",
      "Blurry 417\n",
      "Blurry 418\n",
      "Blurry 419\n",
      "Blurry 420\n",
      "Blurry 421\n",
      "Blurry 422\n",
      "Blurry 423\n",
      "Blurry 424\n",
      "Blurry 425\n",
      "Blurry 426\n",
      "Blurry 427\n",
      "Blurry 428\n",
      "Blurry 429\n",
      "Blurry 430\n",
      "Blurry 431\n",
      "Blurry 432\n",
      "Blurry 433\n",
      "Blurry 434\n",
      "Blurry 435\n",
      "Blurry 436\n",
      "Blurry 437\n",
      "Blurry 438\n",
      "Blurry 439\n",
      "Blurry 440\n",
      "Blurry 441\n",
      "Blurry 442\n",
      "Blurry 443\n",
      "Blurry 444\n",
      "Blurry 445\n",
      "Blurry 446\n",
      "Blurry 447\n",
      "Blurry 448\n",
      "Blurry 449\n",
      "Blurry 450\n",
      "Blurry 451\n",
      "Blurry 452\n",
      "Blurry 453\n",
      "Blurry 454\n",
      "Blurry 455\n",
      "Blurry 456\n",
      "Blurry 457\n",
      "Blurry 458\n",
      "Blurry 459\n",
      "Blurry 460\n",
      "Blurry 461\n",
      "Blurry 462\n",
      "Blurry 463\n",
      "Blurry 464\n",
      "Blurry 465\n",
      "Blurry 466\n",
      "Blurry 467\n",
      "Blurry 468\n",
      "Blurry 469\n",
      "Blurry 470\n",
      "Blurry 471\n",
      "Blurry 472\n",
      "Blurry 473\n",
      "Blurry 474\n",
      "Blurry 475\n",
      "Blurry 476\n",
      "Blurry 477\n",
      "Blurry 478\n",
      "Blurry 479\n",
      "Blurry 480\n",
      "Blurry 481\n",
      "Blurry 482\n",
      "Blurry 483\n",
      "Blurry 484\n",
      "Blurry 485\n",
      "Blurry 486\n",
      "Blurry 487\n",
      "Blurry 488\n",
      "Blurry 489\n",
      "Blurry 490\n",
      "Blurry 491\n",
      "Blurry 492\n",
      "Blurry 493\n",
      "Blurry 494\n",
      "Blurry 495\n",
      "Blurry 496\n",
      "Blurry 497\n",
      "Blurry 498\n",
      "Blurry 499\n",
      "Blurry 500\n",
      "Blurry 501\n",
      "Blurry 502\n",
      "Blurry 503\n",
      "Blurry 504\n",
      "Blurry 505\n",
      "Blurry 506\n",
      "Blurry 507\n",
      "Blurry 508\n",
      "Blurry 509\n",
      "Blurry 510\n",
      "Blurry 511\n",
      "Blurry 512\n",
      "Blurry 513\n",
      "Blurry 514\n",
      "Blurry 515\n",
      "Blurry 516\n",
      "Blurry 517\n",
      "Blurry 518\n",
      "Blurry 519\n",
      "Blurry 520\n",
      "Blurry 521\n",
      "Blurry 522\n",
      "Blurry 523\n",
      "Blurry 524\n",
      "Blurry 525\n",
      "Blurry 526\n",
      "Blurry 527\n",
      "Blurry 528\n",
      "Blurry 529\n",
      "Blurry 530\n",
      "Blurry 531\n",
      "Blurry 532\n",
      "Blurry 533\n",
      "Blurry 534\n",
      "Blurry 535\n",
      "Blurry 536\n",
      "Blurry 537\n",
      "Blurry 538\n",
      "Blurry 539\n",
      "Blurry 540\n",
      "Blurry 541\n",
      "Blurry 542\n",
      "Blurry 543\n",
      "Blurry 544\n",
      "Blurry 545\n",
      "Blurry 546\n",
      "Blurry 547\n",
      "Blurry 548\n",
      "Blurry 549\n",
      "Blurry 550\n",
      "Blurry 551\n",
      "Blurry 552\n",
      "Blurry 553\n",
      "Blurry 554\n",
      "Blurry 555\n",
      "Blurry 556\n",
      "Blurry 557\n",
      "Blurry 558\n",
      "Blurry 559\n",
      "Blurry 560\n",
      "Blurry 561\n",
      "Blurry 562\n",
      "Blurry 563\n",
      "Blurry 564\n",
      "Blurry 565\n",
      "Blurry 566\n",
      "Blurry 567\n",
      "Blurry 568\n",
      "Blurry 569\n",
      "Blurry 570\n",
      "Blurry 571\n",
      "Blurry 572\n",
      "Blurry 573\n",
      "Blurry 574\n",
      "Blurry 575\n",
      "Blurry 576\n",
      "Blurry 577\n",
      "Blurry 578\n",
      "Blurry 579\n",
      "Blurry 580\n",
      "Blurry 581\n",
      "Blurry 582\n",
      "Blurry 583\n",
      "Blurry 584\n",
      "Blurry 585\n",
      "Blurry 586\n",
      "Blurry 587\n",
      "Blurry 588\n",
      "Blurry 589\n",
      "Blurry 590\n",
      "Blurry 591\n",
      "Blurry 592\n",
      "Blurry 593\n",
      "Blurry 594\n",
      "Blurry 595\n",
      "Blurry 596\n",
      "Blurry 597\n",
      "Blurry 598\n",
      "Blurry 599\n",
      "Blurry 600\n",
      "Blurry 601\n",
      "Blurry 602\n",
      "Blurry 603\n",
      "Blurry 604\n",
      "Blurry 605\n",
      "Blurry 606\n",
      "Blurry 607\n",
      "Blurry 608\n",
      "Blurry 609\n",
      "Blurry 610\n",
      "Blurry 611\n",
      "Blurry 612\n",
      "Blurry 613\n",
      "Blurry 614\n",
      "Blurry 615\n",
      "Blurry 616\n",
      "Blurry 617\n",
      "Blurry 618\n",
      "Blurry 619\n",
      "Blurry 620\n",
      "Blurry 621\n",
      "Blurry 622\n",
      "Blurry 623\n",
      "Blurry 624\n",
      "Blurry 625\n",
      "Blurry 626\n",
      "Blurry 627\n",
      "Blurry 628\n",
      "Blurry 629\n",
      "Blurry 630\n",
      "Blurry 631\n",
      "Blurry 632\n",
      "Blurry 633\n",
      "Blurry 634\n",
      "Blurry 635\n",
      "Blurry 636\n",
      "Blurry 637\n",
      "Blurry 638\n",
      "Blurry 639\n",
      "Blurry 640\n",
      "Blurry 641\n",
      "Blurry 642\n",
      "Blurry 643\n",
      "Blurry 644\n",
      "Blurry 645\n",
      "Blurry 646\n",
      "Blurry 647\n",
      "Blurry 648\n",
      "Blurry 649\n",
      "Blurry 650\n",
      "Blurry 651\n",
      "Blurry 652\n",
      "Blurry 653\n",
      "Blurry 654\n",
      "Blurry 655\n",
      "Blurry 656\n",
      "Blurry 657\n",
      "Blurry 658\n",
      "Blurry 659\n",
      "Blurry 660\n",
      "Blurry 661\n",
      "Blurry 662\n",
      "Blurry 663\n",
      "Blurry 664\n",
      "Blurry 665\n",
      "Blurry 666\n",
      "Blurry 667\n",
      "Blurry 668\n",
      "Blurry 669\n",
      "Blurry 670\n",
      "Blurry 671\n",
      "Blurry 672\n",
      "Blurry 673\n",
      "Blurry 674\n",
      "Blurry 675\n",
      "Blurry 676\n",
      "Blurry 677\n",
      "Blurry 678\n",
      "Blurry 679\n",
      "Blurry 680\n",
      "Blurry 681\n",
      "Blurry 682\n",
      "Blurry 683\n",
      "683\n"
     ]
    }
   ],
   "source": [
    "dir_ = 'C://Users//fatik//PycharmProjects//UfaHack2024//data//bloggers'\n",
    "threshold = 100\n",
    "i = 0\n",
    "for imagePath in paths.os.listdir(dir_):\n",
    "    for image_name in os.listdir(os.path.join(dir_, imagePath )):\n",
    "        image = cv2.imread(os.path.join(dir_, imagePath, image_name))\n",
    "        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)\n",
    "        fm = variance_of_laplacian(gray)\n",
    "        text = \"Not Blurry\"\n",
    "        if fm < threshold:\n",
    "            i+=1\n",
    "            text = \"Blurry\"\n",
    "            os.remove(os.path.join(dir_, imagePath, image_name))\n",
    "            print(text, i)\n",
    "        cv2.putText(image, \"{}: {:.2f}\".format(text, fm), (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 3)\n",
    "print(i)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-03-29T16:26:06.297104300Z",
     "start_time": "2024-03-29T16:23:54.923351100Z"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
