{"cells":[{"metadata":{},"cell_type":"markdown","source":"This notebook draws images from the dataset of 'Quick, Draw! Doodle Recognition Challenge.'\nUsing cv2(opencv) module to draw bitmap images from vector data - especially 'simplified' data in the given dataset.\n\nDrawing mechanism/source references:\n*https://www.kaggle.com/gaborfodor/greyscale-mobilenet-lb-0-892*"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nimport pandas as pd\nimport numpy as np\nimport cv2\nimport json\n\nBASE_SIZE = 256\nRAW_INPUT_DIR = '../input/quickdraw-doodle-recognition'","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Common methods for labeling and drawing images.\ndef draw_cv2(x_strokes, y_strokes, size=256, lw=6):\n\timg = np.zeros((BASE_SIZE, BASE_SIZE), np.uint8)\n\t\n\tfor x_stroke, y_stroke in zip(x_strokes, y_strokes):\n\t\tfor i in range(len(x_stroke) - 1):\n\t\t\t_ = cv2.line(img, (x_stroke[i], y_stroke[i]), (x_stroke[i + 1], y_stroke[i + 1]), 255, lw)\n\t\n\treturn img if size == BASE_SIZE else cv2.resize(img, (size, size))\n\n\ndef convert_vector_to_bitmap(image_vector):\n\treturn draw_cv2([stroke[0] for stroke in image_vector], [stroke[1] for stroke in image_vector])\n\n\n# Draw images from all raw files.\ndef draw_raw_data(target_dir, nrows=None, min_scale=0.5):\n\tfile_names = os.listdir(target_dir)\n\t\n\timage_df_path = os.path.join('image_df.csv')\n\tpd.DataFrame(columns=['key_id', 'image', 'label']).to_csv(image_df_path, index=False)\n\t\n\tlast_print_len = 0\n\t\n\tfor i, fn in enumerate(file_names):\n\t\tstatus_message = 'Progress: {}/{} [Current:{}]'.format(i + 1, len(file_names), fn)\n\t\tprint(chr(8) * last_print_len + status_message, end='')\n\t\tlast_print_len = len(status_message)\n\t\t\n\t\t# print('Processing [{}]'.format(fn))\n\t\tdf = pd.read_csv(os.path.join(target_dir, fn), nrows=nrows)  # give some limitation bruh :v!\n\t\tdf['label'] = i\n\t\tdf = df[['key_id', 'drawing', 'label']]\n\t\tdf['drawing'] = df['drawing'].apply(json.loads)\n\t\t\n\t\t# perform standardize\n\t\t# TODO use standardize_vector_image()\n\t\t# draw image\n\t\t# print('Start drawing...')\n\t\tdf['drawing'] = df['drawing'].apply(convert_vector_to_bitmap)\n\t\t\n\t\t# append to the integrated drawing DataFrame\n\t\t# image_df.append(df[['key_id', 'drawing', 'label']], ignore_index=True, sort=False)\n\t\tdf.to_csv(image_df_path, mode='a', header=False, index=False)\n\t# print('{} has been appended.'.format(fn))\n\tprint(chr(8) * last_print_len + 'Done.')\n    \n    \n# Execute\ndraw_raw_data(os.path.join(RAW_INPUT_DIR, 'train_simplified'), nrows=25000)\nraw_dataset = pd.read_csv('image_df.csv')\nprint(raw_dataset.head(10))","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":1}