{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Data Overview\n", "The sample images for these notebooks, stored in the `cards` folder, come from the National Archives and Records Administration of the United States (NARA).\n", "\n", "Each card was created according to IBM 029 standard dimensions, with 80 columns of punch locations that each represent a character of text. In practice,\n", "most operations only used the first 73 columns to represent text and reserved the last few columns to record an order number. This was so that if a stack of cards was spilled on the floor, a machine could be used to re-sort the cards into the proper order. The columns in this NARA do not include an order number of that form.\n", "\n", "\"Example\n", "\n", "The NARA produced these images as an experiment in algorithmically processing punchcards as images. Most of the cards were scanned on their reverse side, so as to exclude their ink guidelines and other marks, leaving only clearly punched holes on an otherwise blank card.\n", "\n", "\"Example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading the Images in Python\n", "We are going to be loading and manipulating these images in a Python code environment, specifically using the Python Image Library (PIL). We use a recent spin-off project of PIL that is called Pillow, but you won't notice the difference expect in our `requirements.txt` file. The first step in using our images is to load a file into an Image object, using the PIL's Image class.\n", "\n", "### Exercise: Loading Images\n", "Look at the code block below and then execute it to load and display an image. Now adjust the code to display a different punchcard image." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Loading the Data\n", "from PIL import Image\n", "\n", "# Read the image file into an Image object:\n", "image = Image.open(\"cards/C04D01L-1.png\")\n", "display(image) # We use the IPython display function to show the image below.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PIL Image Object Attributes\n", "The Image class can do more than display the image on the screen. It can also tell you more about the image. See the full list of Image class attributes on the [Pillow website](https://pillow.readthedocs.io/en/stable/reference/Image.html#attributes)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cards/C04D01L-1.png\n", "PNG\n", "(1152, 544)\n", "1\n", "{'gamma': 0.45455, 'dpi': (150, 150)}\n" ] } ], "source": [ "# Here we print out some attributes of the image object:\n", "print(image.filename)\n", "print(image.format)\n", "print(image.size)\n", "print(image.mode)\n", "print(image.info)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# My Dataset Notes\n", "(This area provided for students to record their notes on the dataset.)\n", "\n", "Next: [Image Preparation](notebook-2.ipynb)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }