Commit 17bf2fb4 authored by Hachemin Pierre-Yves's avatar Hachemin Pierre-Yves

pre last version

parent 0a46145a
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# import the necessary packages\n",
"from sklearn.cluster import KMeans\n",
"import matplotlib.pyplot as plt\n",
"import argparse\n",
"import numpy as np\n",
"import cv2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def centroid_histogram(clt):\n",
"\t# grab the number of different clusters and create a histogram\n",
"\t# based on the number of pixels assigned to each cluster\n",
"\tnumLabels = np.arange(0, len(np.unique(clt.labels_)) + 1)\n",
"\t(hist, _) = np.histogram(clt.labels_, bins = numLabels)\n",
" \n",
"\t# normalize the histogram, such that it sums to one\n",
"\thist = hist.astype(\"float\")\n",
"\thist /= hist.sum()\n",
" \n",
"\t# return the histogram\n",
"\treturn hist\n",
"\n",
"def plot_colors(hist, centroids):\n",
"\t# initialize the bar chart representing the relative frequency\n",
"\t# of each of the colors\n",
"\tbar = np.zeros((50, 300, 3), dtype = \"uint8\")\n",
"\tstartX = 0\n",
" \n",
"\t# loop over the percentage of each cluster and the color of\n",
"\t# each cluster\n",
"\tfor (percent, color) in zip(hist, centroids):\n",
"\t\t# plot the relative percentage of each cluster\n",
"\t\tendX = startX + (percent * 300)\n",
"\t\tcv2.rectangle(bar, (int(startX), 0), (int(endX), 50),\n",
"\t\t\tcolor.astype(\"uint8\").tolist(), -1)\n",
"\t\tstartX = endX\n",
"\t\n",
"\t# return the bar chart\n",
"\treturn bar"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAABaCAYAAACosq2hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAcpJREFUeJzt2yFKBGEYgGFXrd5CD+ARNmw1Cia7QfAm1sXsGQwGMVsUTB5g0VOM2SAIO86wL8/TBob/+9LLX/7FMAx7AOy+/bkXAGAcgg4QIegAEYIOECHoABGCDhAh6AARgg4QIegAEYdTDju/vJrlWerz4/0cY391vTqefOb758HkM8d2dHqx9Rk3Zyc/vu/Wt1ufuete3j7mXmF0y+Vqsllfrw//PmP9tFn85T83dIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdIAIQQeIEHSACEEHiBB0gAhBB4gQdICIxTAMc+8AwAjc0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASIEHSBC0AEiBB0gQtABIgQdIELQASK+AW5kGK8hto3wAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"path=\"./spectrumImages/spectrumImagesAsterix/DR1a7R5usts.jpg\"\n",
"nb_clusters=10\n",
"\n",
"# load the image and convert it from BGR to LAB so that\n",
"# we can dispaly it with matplotlib\n",
"image = cv2.imread(path,1)\n",
"image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n",
"\n",
"# show our image\n",
"plt.figure()\n",
"plt.axis(\"off\")\n",
"plt.imshow(image)\n",
"\n",
"# reshape the image to be a list of pixels\n",
"image = image.reshape((image.shape[0] * image.shape[1], 3))\n",
"\n",
"# cluster the pixel intensities\n",
"clt = KMeans(n_clusters = nb_clusters)\n",
"clt.fit(image)\n",
"\n",
"# build a histogram of clusters and then create a figure\n",
"# representing the number of pixels labeled to each color\n",
"hist = centroid_histogram(clt)\n",
"bar = plot_colors(hist, clt.cluster_centers_)\n",
"\n",
"# show our color bart\n",
"plt.figure()\n",
"plt.axis(\"off\")\n",
"plt.imshow(bar)\n",
"plt.show()\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"path=\"./spectrumImages/spectrumImagesAsterix/7plagklTwWw.jpg\"\n",
"nb_clusters=10\n",
"\n",
"# load the image and convert it from BGR to LAB so that\n",
"# we can dispaly it with matplotlib\n",
"image = cv2.imread(path,1)\n",
"image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n",
"\n",
"# show our image\n",
"plt.figure()\n",
"plt.axis(\"off\")\n",
"plt.imshow(image)\n",
"\n",
"# reshape the image to be a list of pixels\n",
"image = image.reshape((image.shape[0] * image.shape[1], 3))\n",
"\n",
"# cluster the pixel intensities\n",
"clt = KMeans(n_clusters = nb_clusters)\n",
"clt.fit(image)\n",
"\n",
"# build a histogram of clusters and then create a figure\n",
"# representing the number of pixels labeled to each color\n",
"hist = centroid_histogram(clt)\n",
"bar = plot_colors(hist, clt.cluster_centers_)\n",
"\n",
"# show our color bart\n",
"plt.figure()\n",
"plt.axis(\"off\")\n",
"plt.imshow(bar)\n",
"plt.show()\n",
"\n"
]
},
{
"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.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
This diff is collapsed.
{365353: [0, [12, 99], '4NJNI-gOLVg'], 497628: [0, [10752, 99, 36], 'C2NGDEh5SLc'], 405307: [0, [16], '5PLzsy0LYs4'], 340183: [0, [35, 28], 'qMwzfbTEcCc'], 337086: [0, [18], 'yrgcLQgP1IA'], 354441: [0, [53], 'bWtYwnk8zTo'], 395939: [0, [99], 'Db18y15lkik'], 354888: [0, [27], '0SW-rOji2T0'], 404051: [0, [99], 'bYb35M28p-M'], 357452: [0, [9648, 80, 18], '88IuZOoGpN4'], 429773: [0, [99], 'qV0u5MifDfE'], 332489: [0, [99], 'HgmlcH3VUZg'], 379644: [0, [18], 'l4GgQuQgvvA'], 353625: [0, [], 'flTNwaj9IUg'], 413171: [0, [28, 18], '2a9iocPixXk'], 509501: [0, [27], '5M9hado4UhE'], 357598: [0, [18, 35], 'gVe1xJSLHMk'], 365582: [0, [99], '0hDMFYIQ-LM'], 354165: [0, [], 'nHx_pcbV0_E'], 363970: [0, [18, 53], '7CqNtibGLNc'], 451404: [0, [53, 18], 'YUbxoXTWSmI'], 466771: [0, [], 'PKCGgHMOtj8'], 357888: [0, [], 'Yt-74kaEF_k'], 469580: [0, [18], '-_ZGzJvse5c'], 353775: [0, [], 'W4nvwBhKPJg'], 341017: [0, [18, 28], 'MZ5U-iWelm0'], 345720: [0, [99], 'I8Bup69WHcg'], 418203: [0, [10749, 35], 'YPNZdWgsjDU'], 348891: [0, [18], 'TL9E5K9VtAw'], 474223: [0, [], 'q8XBYW38mtI'], 449164: [0, [10749, 18], 'Ij_oQmRF4DM'], 377048: [0, [53, 28], 'h-jD4mqRjb4'], 353186: [0, [10402], 'uoO7B3o_k5U'], 340509: [0, [35], '6YIOaAVmmIg'], 466525: [0, [18], 'ZI4btjn1t34'], 465276: [0, [10749, 35], '8WYHTs3EdNc'], 413143: [0, [53, 18], 'lmoMvBRZn_I'], 338603: [0, [99], 'l6FGRryGbqY'], 361611: [0, [99], 'UWi41Rdm0Qs'], 319773: [0, [18, 10749], '_VGBCCljb5g'], 413437: [0, [53, 28, 10749], '3chrcXw1ZQg'], 375656: [0, [18], 'z5hGN1uuMYw'], 504194: [0, [35, 18], 'nJlEyMi5ja8'], 364308: [0, [27], 'PMsvXcbCczM'], 361565: [0, [99], 'Zq8H0rEJ-ss'], 397991: [0, [], '2TDXIp8J4LY'], 421262: [0, [16], '2WjsEHp0Eqo'], 445038: [0, [35], 'hzSVySzaG1I'], 382476: [0, [27, 35], '0A557EFGnAU'], 382050: [0, [27], 'qpLi6NQTMCg'], 362369: [0, [10402, 99], 'brO8BR-kFF0'], 412142: [0, [35], '_cpJ9Q-sqdg'], 331319: [0, [], 'DfA9nK_QZJ8'], 470746: [0, [99], 'FEc_D_meOBY'], 425535: [0, [18, 35], 'AeMvfHaZql4'], 404085: [0, [99], 'zQp7e46OV04'], 447713: [0, [18, 35, 10749], 'SXryT800nS4'], 345176: [0, [35], 'WG9kuUw1ssE'], 443264: [0, [99], 'f1HI4daPWFM'], 360401: [0, [99], 'IlNNu5s7lwI'], 453441: [0, [], 'aky9FFj4ybE'], 428394: [0, [53, 27], 'a_5mOuEO7RY'], 344699: [0, [], 'VIjgJMeINXE'], 466403: [0, [10749, 28, 53], 'GFnwImtVAbw'], 405319: [0, [16], '6ImLlX7V-sU'], 413546: [0, [35], 'mmKHHDzDAyM'], 493283: [0, [35], '89DjhTUXcnM'], 331383: [0, [27], '2OILnfXrNqM'], 338757: [0, [99], 'oOLaSo2-B3E'], 493939: [0, [], 'NmiEjkhjkYI'], 338274: [0, [53], 'Mg9hwk2XzlQ'], 298886: [0, [28, 53], 'Ih1BazoQMQY'], 465126: [0, [36, 18], 'rnFZgdHXnmI'], 393835: [0, [], 'owo_mK3HmLo'], 339818: [0, [99], 'b-gRcXPjHaw'], 505557: [0, [53, 27], 'tP20D69PzsU'], 362277: [0, [], '8DIjyFpXBlk'], 488099: [0, [99], '59j2AxHGKmQ'], 397826: [0, [99], 'gr2AptgjvnE'], 504223: [0, [28, 35, 18], 'PuLisEMlZOQ'], 352455: [0, [], 'QJF6IzXApag'], 506330: [0, [35], 'wor0jrZt4tw'], 345153: [0, [35, 10751], 'p8ffMMdQw2c'], 107679: [0, [], 'i3Bdty8obeE'], 352843: [0, [12, 36, 10402], 'ivJPh39URPY'], 341032: [0, [99], '6KnQl-wbccI'], 339027: [0, [99], 'VT22K0MkQcI'], 333866: [0, [35, 27], '3ZjvbYa8dfo'], 324604: [0, [99], 'Ozp-_pAi0Zs'], 457609: [0, [], 'pJyyuGlT7i0'], 331861: [0, [28, 35], 'Cq4JePOaJZQ'], 372858: [0, [10749, 18], 'oj7taZ5uOTE'], 365375: [0, [18], 'efVmkjEHr4M'], 394714: [0, [], 'Wh7BdvS9FAQ'], 422957: [0, [35, 99], 'Phfz8eDgsNY'], 332507: [0, [53, 18], 'ERBABKtAKDw'], 414344: [0, [35, 10749], 'vOmjTcCrzl0'], 458581: [0, [99], 'jFhsqXb_BUU'], 511013: [0, [18, 35], 'td2j3aA_ktI'], 328725: [0, [], '_9t3p8DztXk'], 490974: [0, [18], 'DLJDgd8EkKs'], 391628: [0, [99], 'eXhy5prz83k'], 339146: [0, [18, 10749], 'HwZZyHcfhfk'], 342745: [0, [99], 's16jiyd7Ago'], 318131: [0, [], 'MNd_1kJ9y5s'], 388172: [0, [878, 18], 's7v7wdhLlew'], 484244: [0, [35], 'mJfoUAXUXiA'], 509562: [0, [36], 'wpFyfLp2CP4'], 351229: [0, [99], 'vGJEc9n5SLM'], 380491: [0, [35, 18, 10749], 'YJlCn5YMwqo'], 328327: [0, [35], 'oTt-XgnOPrY'], 340265: [0, [35, 9648], 'LVgnzAtwCZw'], 316336: [0, [99], 'vAdJg4BWpD4'], 421015: [0, [], 'SgwurgCZdvU'], 366875: [0, [99], 'kash5VkAKkk'], 357899: [0, [99, 36], 'oKz4kV0sSTE'], 486816: [0, [], 'XJUEhZIe6rU'], 492803: [0, [18], '8wKwzWQEk5Q'], 397500: [0, [18], 'VOvD8adaErk'], 331445: [0, [18], '3p5Tc3QKHv0'], 323583: [0, [99, 10402], 'dGtq4HTapDA'], 388971: [0, [10749, 35, 18], 'j43eCUAgWOo'], 361761: [0, [28, 12, 99, 36], '40Jr2ZDHDnY'], 369327: [0, [18, 35], 'HGP5pN48d1w'], 340216: [0, [], 'IL6oCpPQRr8'], 402320: [0, [99], 'W0uohwW4Pfo'], 353857: [0, [27], 'FKuON-_CnYI'], 437523: [0, [10402], 'AXP6bnyqjHw'], 512317: [0, [99, 10402], 'iBMWa3NfqKY'], 318056: [0, [99], 'X3nr1nlTs3g'], 336156: [0, [99], 'cGS2CAsD1ME'], 406839: [0, [10402, 18], 'tHgs7yAjQWY'], 448115: [0, [10749, 18], 'cayOtDuO_6U'], 327381: [0, [18], 'rPu-DN58KuM'], 335589: [0, [18], '_K6XqQvP7xQ'], 328870: [0, [9648, 27], 'qe_5qfulIZM'], 347443: [0, [35], '5SWUdnTO5zI'], 413438: [0, [18, 53, 27], 'uGGeBUJQjNg'], 384308: [0, [], 'ZXitifMbUqQ'], 418926: [0, [], 'qTsA6-Rbw7U'], 335909: [0, [], '3pRgBV_8TT4'], 421685: [0, [], '7nBSdPftSJY'], 414852: [0, [99], 'bDnglcBLTs0'], 510304: [0, [18, 80], 'KburpTTF0Zg'], 429803: [0, [35], 'uwswgMs1nuk'], 436702: [0, [], '6sV3pxB86Y4'], 494815: [0, [35, 10749], 'UA86vDkbPRA'], 402905: [0, [18, 9648, 10749], 'nP4q4MRGfMY'], 375733: [0, [99, 10402], '5ZXkjtO4gjM'], 360728: [0, [10749, 18], 'BvjKfxBCSaU'], 471673: [0, [27, 28], 'crn4W839LrA'], 329327: [0, [18], 'SCfX1gfyag8'], 319971: [0, [35], '_G6TL-Nucts'], 348969: [0, [14, 16], 'gxLN09Kajgc'], 363361: [0, [18, 878, 35], 'dSAeRJBXeIA'], 363901: [0, [], 'WE3t3vB_1TM'], 482603: [0, [35], 'h2dXqtsbby0'], 497856: [0, [53], 'oOmloGfNONc'], 387572: [0, [99], 'OXNCY6bjMP8'], 411189: [0, [35, 10749], '8inxztzBlL4'], 361762: [0, [10402, 99], '58oKcz3UPl4'], 363348: [0, [18], '8_QMDmdqfGM'], 366913: [0, [18, 36], 'SHpwXHCOaGM'], 330008: [0, [], 'EA03oQnQ6IE'], 309885: [0, [53, 27], '3kp3_P0XzzU'], 337042: [0, [], 't_gTgChDBXk'], 407520: [0, [], 'aSZKo-d63sI'], 494578: [0, [35, 18], 'iEG0rDQheWs'], 374644: [0, [99], 'mXhq4EXilQc'], 394717: [0, [], 'dU9358Qhy6Q'], 338590: [0, [99, 36], '_fC2TsHnmoM'], 328950: [0, [878], 'LVvndRkEFa4'], 339341: [0, [99], 'zajcMv4MTMs'], 471895: [0, [35, 27, 14], 'y-_L548ZYIw'], 348651: [0, [28, 16], 'ekz-FY_MDGA'], 324321: [0, [35, 18], 'UoY_J8NDU1s'], 362374: [0, [99], 'zk_jTvYu2i8'], 407512: [0, [], 'UNHgbWuLYH4'], 407514: [0, [], 'CMNFgNHsiBw'], 394605: [0, [99, 36, 10770], 'eYXiwk24pnc'], 232504: [0, [18], '6ttCNr_Mna4'], 449016: [0, [18, 10749], 'Tn7AZVHJhqw'], 314590: [0, [], 'WWjEvwQDLlE'], 295881: [0, [18], 'XOgR0cNtBJU'], 364489: [0, [878, 16, 27, 14], 'WRz8RLotl7s'], 249108: [0, [99], 's3vAH_uTjI0'], 449033: [0, [9648, 53], 'fQMez6DmNrM'], 293630: [0, [], 'sYZWx6IVFb8'], 389224: [0, [35, 16], 'YEl1q90SjkU'], 98593: [0, [], 'nJ8aT7OUSr0'], 374016: [0, [12, 16], 'Ga89i7r5R8A'], 323593: [0, [35, 16], 'kuPoScMR078'], 472302: [0, [27], 'Xo05JyJPxf8'], 102935: [0, [80, 99], 'oBOH-hG-Jug'], 400584: [0, [35, 10402, 37], 'Jx-2EDIzS-g'], 498384: [0, [10402, 99], 'Y3h0CuuPjfs'], 355036: [8.5, [99], 'NCPpvwHRlJs'], 369570: [0, [18], 'Pk5fI3ckcP8'], 429448: [0, [99], 'jOnHBHy9r54'], 427060: [0, [53, 27, 80, 9648], 'WK5w2rYEd4c']}
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment