Repository where I mostly put random python scripts.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

306 lines
650 KiB

  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "metadata": {},
  7. "outputs": [],
  8. "source": [
  9. "# Open cv library\n",
  10. "import cv2\n",
  11. "\n",
  12. "# matplotlib for displaying the images \n",
  13. "from matplotlib import pyplot as plt"
  14. ]
  15. },
  16. {
  17. "cell_type": "code",
  18. "execution_count": 2,
  19. "metadata": {},
  20. "outputs": [],
  21. "source": [
  22. "img = cv2.imread('dolphin.jpg')"
  23. ]
  24. },
  25. {
  26. "cell_type": "code",
  27. "execution_count": 3,
  28. "metadata": {},
  29. "outputs": [
  30. {
  31. "data": {
  32. "image/png": "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
  33. "text/plain": [
  34. "<Figure size 432x288 with 1 Axes>"
  35. ]
  36. },
  37. "metadata": {
  38. "needs_background": "light"
  39. },
  40. "output_type": "display_data"
  41. }
  42. ],
  43. "source": [
  44. "def printI(img):\n",
  45. " rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n",
  46. " plt.imshow(rgb)\n",
  47. " \n",
  48. "def printI2(i1, i2):\n",
  49. " fig = plt.figure()\n",
  50. " ax1 = fig.add_subplot(1,2,1)\n",
  51. " ax1.imshow(cv2.cvtColor(i1, cv2.COLOR_BGR2RGB))\n",
  52. " ax2 = fig.add_subplot(1,2,2)\n",
  53. " ax2.imshow(cv2.cvtColor(i2, cv2.COLOR_BGR2RGB))\n",
  54. " \n",
  55. "printI(img)"
  56. ]
  57. },
  58. {
  59. "cell_type": "code",
  60. "execution_count": 4,
  61. "metadata": {},
  62. "outputs": [
  63. {
  64. "data": {
  65. "image/png": "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
  66. "text/plain": [
  67. "<Figure size 432x288 with 2 Axes>"
  68. ]
  69. },
  70. "metadata": {
  71. "needs_background": "light"
  72. },
  73. "output_type": "display_data"
  74. }
  75. ],
  76. "source": [
  77. "def pixelate(img, w, h):\n",
  78. " height, width = img.shape[:2]\n",
  79. "\n",
  80. " # Resize input to \"pixelated\" size\n",
  81. " temp = cv2.resize(img, (w, h), interpolation=cv2.INTER_LINEAR)\n",
  82. "\n",
  83. " # Initialize output image\n",
  84. " return cv2.resize(temp, (width, height), interpolation=cv2.INTER_NEAREST)\n",
  85. "\n",
  86. "img16 = pixelate(img, 16, 16)\n",
  87. "\n",
  88. "printI2(img, img16)"
  89. ]
  90. },
  91. {
  92. "cell_type": "code",
  93. "execution_count": 5,
  94. "metadata": {},
  95. "outputs": [
  96. {
  97. "data": {
  98. "image/png": "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
  99. "text/plain": [
  100. "<Figure size 432x288 with 2 Axes>"
  101. ]
  102. },
  103. "metadata": {
  104. "needs_background": "light"
  105. },
  106. "output_type": "display_data"
  107. }
  108. ],
  109. "source": [
  110. "img32 = pixelate(img, 32, 32)\n",
  111. "img64 = pixelate(img, 64, 64)\n",
  112. "\n",
  113. "printI2(img32, img64)"
  114. ]
  115. },
  116. {
  117. "cell_type": "code",
  118. "execution_count": 6,
  119. "metadata": {},
  120. "outputs": [
  121. {
  122. "data": {
  123. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQQAAAD8CAYAAACRvtrKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAARFklEQVR4nO3dbYxc5XnG8f81M/uGjVm/gOt4nZgIV5SqDdBt4ohKjUCRgKLAB5qCouBGlvyFSkSKlEIrNWoVqcmXkESqoqI6ihOlIWkSCQshIWqooqoKiQkvAVzCgkKxZXAwfgGvvbsz5+6HefZhMMa79s48MytdP2m05zzn7D737M5cc87Z2b0VEZiZAdT6XYCZDQ4HgpllDgQzyxwIZpY5EMwscyCYWdaTQJB0vaQXJE1JursXc5hZ96nb70OQVAd+A3wS2A/8Erg9Ip7v6kRm1nW9OEL4KDAVES9HxCxwP3BzD+Yxsy5r9OBrbgRe7VjfD3zsbJ8wOr4mVvzeRA9KeS8Bw2ogFZmO0PysvdecOcWJ1w4WmQtgqFFHtTL3TSNj1MbXFZmLCFpVq8xcgFSjVqsXm+/w/z7xRkRcfKZtvQiERZG0A9gBsGL9Rm7c+WCReYeo8cHhi6gVSoTWUI2ol7l2e+SlKf7nn/+pyFwAG9avZnR0uMhc9cv+iLGb7igyV0RwYvo4VVRF5hseXsHY6KoicwF8Z6teeb9tvXikHgA2daxPpLF3iYj7ImIyIiZHxtf0oAwzO1e9CIRfAlskXSppGLgN2N2Decysy7p+yhARTUl/AzwM1IFvR8Rz3Z7HzLqvJ9cQIuIh4KFefG0z6x2/U9HMMgeCmWUOBDPLHAhmljkQzCxzIJhZ5kAws8yBYGaZA8HMMgeCmWUOBDPLHAhmljkQzCxzIJhZ5kAws8yBYGaZA8HMMgeCmWUOBDPLHAhmljkQzCzrW+emTrWaWFGoA1At4PjsqULN1eC1p5/j7d/9rshcc8ePMjy+sshcAGs/sJ6VF4wWmUujovHyr4rMBbC+XiG62wj5/by16mKOlnn4L2ggAqGucoFQtSrenj5VZC6A3z79FIeeK9OWYqgh1l20AhVqU7d6/TrGLywUQFUF//dsmbmAS1aN0ijUgu+VRsXvVpdr5XY2PmUws8yBYGaZA8HMMgeCmWUOBDPLHAhmljkQzCxzIJhZ5kAws8yBYGaZA8HMMgeCmWUOBDPLHAhmljkQzCxbMBAkfVvSIUnPdoytkfSIpBfTx9VpXJK+KWlK0jOSru5l8WbWXYs5QvgOcP1pY3cDeyJiC7AnrQPcAGxJtx3At7pTppmVsGAgRMTPgDdPG74Z2JWWdwG3dIx/N9p+DoxL2tCtYs2st873GsL6iDiYll8D1qfljcCrHfvtT2PvIWmHpL2S9k4fOXyeZZhZNy35omJEBJz7f6OMiPsiYjIiJi9YvXapZZhZF5xvILw+fyqQPh5K4weATR37TaQxM1sGzjcQdgPb0vI24IGO8TvSbxu2Asc6Ti3MbMAt+G/YJf0A+ASwTtJ+4EvAV4AfSdoOvAJ8Ou3+EHAjMAVMA5/rQc1m1iMLBkJE3P4+m647w74B3LnUosysP/xORTPLBqJzUyuCt2dOFplLiJEVo8Vaua24ZDUXHr24yFz1aBLNY4UakMEbrZNMz5X5TkYLqtlS9wxeO34ERVVkrqGT8EGNFJlrIQMRCFVUTM+Waa9Wr9W5cNWqYu3OVl6ymtnpS4rMFTMnaL1epo8kwOHWNMeaZeaqmtCaqReZKyI4cfAg0Sxz535/Dq4aGoxA8CmDmWUOBDPLHAhmljkQzCxzIJhZ5kAws8yBYGaZA8HMMgeCmWUOBDPLHAhmljkQzCxzIJhZ5kAws8yBYGaZA8HMMgeCmWUOBDPLHAhmljkQzCxzIJhZ5kAws8yBYGaZA8HMMgeCmWUD0bmJgKoq06ZLVMxMnyjWyi1aLWqFukRFowEXrCwyF0Bt9AJqw2NlJqtDVej1SxHUx1ZQNeeKzFc1hphutYrMtZCBCIRWwNtlWjvSOnGMff91P1HoB3DJ2nHWja8oMlftwg2M3XIrFIq7en0YqcyTtBXBDGV6LRKw6tgsFHqRev3Ayzz/8nNF5lrIQARCSVUEzVMzRFUokauKWq3ME7RWr1MbGSvWt7JGo1ggVAS1QoEQEdRGRKn8qep1ZqNcI9uz8TUEM8scCGaWORDMLHMgmFnmQDCzzIFgZtmCgSBpk6THJD0v6TlJd6XxNZIekfRi+rg6jUvSNyVNSXpG0tW9vhNm1h2LOUJoAl+IiCuArcCdkq4A7gb2RMQWYE9aB7gB2JJuO4Bvdb1qM+uJBQMhIg5GxK/S8lvAPmAjcDOwK+22C7glLd8MfDfafg6MS9rQ9crNrOvO6RqCpM3AVcDjwPqIOJg2vQasT8sbgVc7Pm1/GjOzAbfoQJC0EvgJ8PmION65LSICOKf3XkraIWmvpL2zR988l081sx5ZVCBIGqIdBt+PiJ+m4dfnTwXSx0Np/ACwqePTJ9LYu0TEfRExGRGTw+Nrzrd+M+uixfyWQcBOYF9EfK1j025gW1reBjzQMX5H+m3DVuBYx6mFmQ2wxfy14zXAZ4FfS3oqjf0d8BXgR5K2A68An07bHgJuBKaAaeBzXa3YzHpmwUCIiP/m/f/A/roz7B/AnUusy8z6wO9UNLPMgWBmmQPBzDIHgpllDgQzyxwIZpY5EMwscyCYWeZAMLNsIBq1CKgXamZSSbSqVrHOTdTq0BgqMpXqDVSy4Yc4x79xXcpUAYXumyh611C9Tm2ozGNkIQMRCMONOpsvWV1krrfqLfYe3E+rUN++D1w9ydjlVxSZSxL1k6eKzAVQH2mgepm5ak1gpllmMsHcULlAuHBiI1q3qtBsZzcQgSCJeq3M2UtNoqpaVFWhPl21Gip1hAAQUayVW/uVtFTb3FIdK+cPREShbyOq16gNDZeZbAG+hmBmmQPBzDIHgpllDgQzyxwIZpY5EMwscyCYWeZAMLPMgWBmmQPBzDIHgpllDgQzyxwIZpY5EMwscyCYWeZAMLPMgWBmmQPBzDIHgpllDgQzyxwIZpY5EMwscyCYWeZAMLPMgWBm2UB0biICWmVaq9Gaozl7ktZcmfmiOQPN2SJzVbUa00MjReYCaNRmUa1Me7VKLeZKPUYEjFDs5bKGGI2xMpMtYMFAkDQK/Iz2t6gB/DgiviTpUuB+YC3wBPDZiJiVNAJ8F/gT4DDwVxHx27PPEqgq1Hy1NUdr5mSx3o7RnEFVmbla1JmujVKmB1kwVGtSqAMfLVrMRaFACBhqgOqlWuIND0wgLObHOQNcGxEfAa4Erpe0FfgqcG9EXAYcAban/bcDR9L4vWk/M1sGFgyEaHs7rQ6lWwDXAj9O47uAW9LyzWmdtP06leo+amZLsqgDPkl1SU8Bh4BHgJeAoxExfwK5H9iYljcCrwKk7cdon1ac/jV3SNorae/JI4eXdi/MrCsWFQgR0YqIK4EJ4KPA5UudOCLui4jJiJgcW/2evDCzPjinS0IRcRR4DPg4MC5p/qLkBHAgLR8ANgGk7RfRvrhoZgNuwUCQdLGk8bQ8BnwS2Ec7GG5Nu20DHkjLu9M6afujERHdLNrMemMx70PYAOySVKcdID+KiAclPQ/cL+nLwJPAzrT/TuB7kqaAN4HbelC3mfXAgoEQEc8AV51h/GXa1xNOHz8F/GVXqjOzovzWZTPLHAhmljkQzCxzIJhZ5kAws8yBYGaZA8HMMgeCmWUOBDPLHAhmljkQzCxzIJhZ5kAws8yBYGaZA8HMMgeCmWUOBDPLBqKVW1UFb82UaXc2PduCGIaqTKuIFXNw0aky7c7mGkFrpFAHLIDZaLc9K6A52+TUyZNlJhPUhkeKdW6qRwtR5vG/kIEIhFYEJ2bLPGlOzDaJagiizA/7glkYny3zJJ2p4FSrWaSVWxDMVe2OPSXEzBwzM6cKzQYjw0PU6/Uic0WthQbimehTBjPr4EAws8yBYGaZA8HMMgeCmWUOBDPLHAhmljkQzCxzIJhZ5kAws8yBYGa
  124. "text/plain": [
  125. "<Figure size 432x288 with 1 Axes>"
  126. ]
  127. },
  128. "metadata": {
  129. "needs_background": "light"
  130. },
  131. "output_type": "display_data"
  132. }
  133. ],
  134. "source": [
  135. "img8 = pixelate(img, 8, 8)\n",
  136. "printI(img8)"
  137. ]
  138. },
  139. {
  140. "cell_type": "code",
  141. "execution_count": 7,
  142. "metadata": {},
  143. "outputs": [],
  144. "source": [
  145. "import skimage\n",
  146. "from sklearn.cluster import KMeans\n",
  147. "from numpy import linalg as LA\n",
  148. "import numpy as np"
  149. ]
  150. },
  151. {
  152. "cell_type": "code",
  153. "execution_count": 8,
  154. "metadata": {},
  155. "outputs": [],
  156. "source": [
  157. "def colorClustering(idx, img, k):\n",
  158. " clusterValues = []\n",
  159. " for _ in range(0, k):\n",
  160. " clusterValues.append([])\n",
  161. " \n",
  162. " for r in range(0, idx.shape[0]):\n",
  163. " for c in range(0, idx.shape[1]):\n",
  164. " clusterValues[idx[r][c]].append(img[r][c])\n",
  165. "\n",
  166. " imgC = np.copy(img)\n",
  167. "\n",
  168. " clusterAverages = []\n",
  169. " for i in range(0, k):\n",
  170. " clusterAverages.append(np.average(clusterValues[i], axis=0))\n",
  171. " \n",
  172. " for r in range(0, idx.shape[0]):\n",
  173. " for c in range(0, idx.shape[1]):\n",
  174. " imgC[r][c] = clusterAverages[idx[r][c]]\n",
  175. " \n",
  176. " return imgC"
  177. ]
  178. },
  179. {
  180. "cell_type": "code",
  181. "execution_count": 9,
  182. "metadata": {},
  183. "outputs": [],
  184. "source": [
  185. "def segmentImgClrRGB(img, k):\n",
  186. " \n",
  187. " imgC = np.copy(img)\n",
  188. " \n",
  189. " h = img.shape[0]\n",
  190. " w = img.shape[1]\n",
  191. " \n",
  192. " imgC.shape = (img.shape[0] * img.shape[1], 3)\n",
  193. " \n",
  194. " #5. Run k-means on the vectorized reponses X to get a vector of labels (the clusters); \n",
  195. " # \n",
  196. " kmeans = KMeans(n_clusters=k, random_state=0).fit(imgC).labels_\n",
  197. " \n",
  198. " #6. Reshape the label results of k-means so that it has the same size as the input image\n",
  199. " # Return the label image which we call idx\n",
  200. " kmeans.shape = (h, w)\n",
  201. "\n",
  202. " return kmeans"
  203. ]
  204. },
  205. {
  206. "cell_type": "code",
  207. "execution_count": 10,
  208. "metadata": {},
  209. "outputs": [
  210. {
  211. "data": {
  212. "image/png": "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
  213. "text/plain": [
  214. "<Figure size 432x288 with 1 Axes>"
  215. ]
  216. },
  217. "metadata": {
  218. "needs_background": "light"
  219. },
  220. "output_type": "display_data"
  221. }
  222. ],
  223. "source": [
  224. "def kMeansImage(image, k):\n",
  225. " idx = segmentImgClrRGB(image, k)\n",
  226. " return colorClustering(idx, image, k)\n",
  227. "\n",
  228. "printI(kMeansImage(img, 5))"
  229. ]
  230. },
  231. {
  232. "cell_type": "code",
  233. "execution_count": 11,
  234. "metadata": {},
  235. "outputs": [
  236. {
  237. "data": {
  238. "image/png": "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
  239. "text/plain": [
  240. "<Figure size 432x288 with 1 Axes>"
  241. ]
  242. },
  243. "metadata": {
  244. "needs_background": "light"
  245. },
  246. "output_type": "display_data"
  247. }
  248. ],
  249. "source": [
  250. "printI(kMeansImage(img32, 3))"
  251. ]
  252. },
  253. {
  254. "cell_type": "code",
  255. "execution_count": 12,
  256. "metadata": {},
  257. "outputs": [
  258. {
  259. "data": {
  260. "image/png": "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
  261. "text/plain": [
  262. "<Figure size 1296x432 with 3 Axes>"
  263. ]
  264. },
  265. "metadata": {
  266. "needs_background": "light"
  267. },
  268. "output_type": "display_data"
  269. }
  270. ],
  271. "source": [
  272. "def printI3(i1, i2, i3):\n",
  273. " fig = plt.figure(figsize=(18,6))\n",
  274. " ax1 = fig.add_subplot(1,3,1)\n",
  275. " ax1.imshow(cv2.cvtColor(i1, cv2.COLOR_BGR2RGB))\n",
  276. " ax2 = fig.add_subplot(1,3,2)\n",
  277. " ax2.imshow(cv2.cvtColor(i2, cv2.COLOR_BGR2RGB))\n",
  278. " ax3 = fig.add_subplot(1,3,3)\n",
  279. " ax3.imshow(cv2.cvtColor(i3, cv2.COLOR_BGR2RGB))\n",
  280. " plt.savefig('trifecta.png')\n",
  281. "printI3(img, img32, kMeansImage(img32, 3))"
  282. ]
  283. }
  284. ],
  285. "metadata": {
  286. "kernelspec": {
  287. "display_name": "Python 3",
  288. "language": "python",
  289. "name": "python3"
  290. },
  291. "language_info": {
  292. "codemirror_mode": {
  293. "name": "ipython",
  294. "version": 3
  295. },
  296. "file_extension": ".py",
  297. "mimetype": "text/x-python",
  298. "name": "python",
  299. "nbconvert_exporter": "python",
  300. "pygments_lexer": "ipython3",
  301. "version": "3.8.3"
  302. }
  303. },
  304. "nbformat": 4,
  305. "nbformat_minor": 4
  306. }