Files
jupyter-collection/scientific-computing-2/auto_examples_jupyter_3/plot_image_transform.ipynb

106 lines
427 KiB
Plaintext
Raw Normal View History

2025-10-21 11:20:44 +08:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"# Plot geometrical transformations on images\n",
"\n",
"Demo geometrical transformations of images.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1500x300 with 5 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Load some data\n",
"import scipy as sp\n",
"\n",
"face = sp.datasets.face(gray=True)\n",
"\n",
"# Apply a variety of transformations\n",
"import matplotlib.pyplot as plt\n",
"\n",
"shifted_face = sp.ndimage.shift(face, (50, 50))\n",
"shifted_face2 = sp.ndimage.shift(face, (50, 50), mode=\"nearest\")\n",
"rotated_face = sp.ndimage.rotate(face, 30)\n",
"cropped_face = face[50:-50, 50:-50]\n",
"zoomed_face = sp.ndimage.zoom(face, 2)\n",
"zoomed_face.shape\n",
"\n",
"plt.figure(figsize=(15, 3))\n",
"plt.subplot(151)\n",
"plt.imshow(shifted_face, cmap=\"gray\")\n",
"plt.axis(\"off\")\n",
"\n",
"plt.subplot(152)\n",
"plt.imshow(shifted_face2, cmap=\"gray\")\n",
"plt.axis(\"off\")\n",
"\n",
"plt.subplot(153)\n",
"plt.imshow(rotated_face, cmap=\"gray\")\n",
"plt.axis(\"off\")\n",
"\n",
"plt.subplot(154)\n",
"plt.imshow(cropped_face, cmap=\"gray\")\n",
"plt.axis(\"off\")\n",
"\n",
"plt.subplot(155)\n",
"plt.imshow(zoomed_face, cmap=\"gray\")\n",
"plt.axis(\"off\")\n",
"\n",
"plt.subplots_adjust(wspace=0.05, left=0.01, bottom=0.01, right=0.99, top=0.99)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.12.11"
}
},
"nbformat": 4,
"nbformat_minor": 4
}