{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nimport tqdm\nimport cv2\nimport matplotlib.pyplot as plt\n\nfrom joblib import Parallel, delayed","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"PAD = True\nWIDTH = 1024\nHEIGHT = 1024","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data_folder = \"/kaggle/input/hotel-id-2021-fgvc8/\"\ntrain_df = pd.read_csv(data_folder + \"train.csv\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def pad_image(img):\n    w, h, c = np.shape(img)\n    if w > h:\n        pad = int((w - h) / 2)\n        img = cv2.copyMakeBorder(img, 0, 0, pad, pad, cv2.BORDER_CONSTANT, value=0)\n    else:\n        pad = int((h - w) / 2)\n        img = cv2.copyMakeBorder(img, pad, pad, 0, 0, cv2.BORDER_CONSTANT, value=0)\n        \n    return img\n\n\ndef open_and_preprocess_image(row_df):\n    img = cv2.imread(f\"{data_folder}train_images/{row_df.chain.astype(int)}/{row_df.image}\")\n    if PAD:\n        img = pad_image(img)    \n    \n    return cv2.resize(img, (WIDTH, HEIGHT))\n\n\ndef save_image(row_df, img):\n    cv2.imwrite(f\"{row_df.image}\", img)\n    \n    \ndef process_row(row_df):\n    img = open_and_preprocess_image(row_df)\n    save_image(row_df, img)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ndfs_proc = Parallel(n_jobs=4, prefer='threads')(delayed(process_row)(train_df.loc[i]) for i in range(0, len(train_df)))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!cd /kaggle/working/ & zip -jqr train.zip .\n!find . -name \"*.jpg\" -delete","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}