{ "cells": [ { "cell_type": "markdown", "id": "d44cffb1", "metadata": {}, "source": [ "# Image\n", "\n", "A guide to drawing and manipulating images with NumPy and Matplotlib." ] }, { "cell_type": "code", "execution_count": 1, "id": "b02b1ba2", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "c0374be0", "metadata": {}, "source": [ "## Grid pattern in plt.imshow\n", "\n", "Create a grid pattern with horizontal and vertical lines, plus a distinctive marker in the center." ] }, { "cell_type": "code", "execution_count": 2, "id": "29ad3de5", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Ground truth: grid pattern\n", "size = 256\n", "ground_truth = np.zeros((size, size))\n", "for i in range(0, ground_truth.shape[0], 16):\n", " ground_truth[i:i+2, :] = 0.5 # horizontal lines\n", " ground_truth[:, i:i+2] = 0.5 # vertical lines\n", "# Add a distinctive marker in the center\n", "cx, cy = ground_truth.shape[0] // 2, ground_truth.shape[1] // 2\n", "ground_truth[cx-8:cx+8, cy-8:cy+8] = 0.5\n", "plt.imshow(ground_truth)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "31e41760", "metadata": {}, "source": [ "## Grid pattern in matplotlib\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "qt-env", "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.13.11" } }, "nbformat": 4, "nbformat_minor": 5 }