Difference between revisions of "CSC111 Lab 7 2014"
(→Problem 5: Border) |
(→Problem 6: B&W image with Colored Border) |
||
Line 88: | Line 88: | ||
Make your program output a version of your colored image that will be black and white with a colored border around it. | Make your program output a version of your colored image that will be black and white with a colored border around it. | ||
+ | =Problem 7: Diagonal = | ||
+ | * Replace the nested for-loops by this single loop like this: | ||
+ | |||
+ | <source lang="python"> | ||
+ | for x in range(0,getWidth(image)): | ||
+ | y = min( x, getHeight( image )-1 ) | ||
+ | pixel = getPixel (image, x, y) | ||
+ | ... | ||
+ | </source> | ||
+ | :and set the color of that pixel to red. What do you get? | ||
+ | |||
+ | * Modify your function so that it puts a red diagonal cross over the image. | ||
<br /> | <br /> | ||
<br /> | <br /> |
Revision as of 12:53, 10 March 2014
--D. Thiebaut (talk) 12:45, 10 March 2014 (EDT)
Contents
JES and Image Processing
Skeleton Program
# JES Picture processing
# D. Thiebaut
# A demo of some of the functions available in JES for manipulating
# the pixels of an image.
# the image we are playing with
image = None
# changeColor( image ).
# Changes the amount of red, green and blue that is in an image
def changeColor( image ):
for x in range(0,getWidth(image)):
for y in range(0,getHeight(image)):
pixel = getPixel (image, x, y)
red = getRed(pixel)
green = getGreen(pixel)
blue = getBlue(pixel)
# the line below replaces the pixel with its original color. Change
# the amount of red, green and blue to see some change in the colors
newColor = makeColor( red, green, blue )
setColor( pixel, newColor )
return image
# ==================================================================
# MAIN PROGRAM
# ==================================================================
file = pickAFile()
image = makePicture( file )
show( image )
#image = changeColor( image )
#repaint( image )
Problem 1: random processing
Write a function (use the skeleton program for a skeleton function with nested for-loops) that modifies the red, green and blue components of each pixel.
Problem 2: black and white
- Make your image black and white by storing the same value in the green, red, and blue component of a pixel. In a first step, pick the amount of red of the pixel and store that number in the 3 components.
- Next take the average amount of red, green and blue and store that value (store it in a variable called grey for example), in all three components.
- Better: initial the grey variable as follows:
grey = int( 0.3 * red +0.6 * green +0.11 * blue )
Problem 3
Copy paste this function that contains a call to repaint( image ) inside the for x in range(...) loop. See how the program "sweeps" through the image.
- Modify the function so that the sweep goes from left to right.
- Modify the function so that the sweep goes from top to bottom
- Modify the function so that the sweep goes from bottom to top
Problem 4
Pick one of the functions you have written for the problems above and make a new copy of it under a different name.
Replace the nested for-loop with this loop:
for x in range( getWidth( image ) ): for y in range( min( x, getHeight( image ) ):
Predict the way the image is going to be transformed by these nested for-loops. Then run it!
Problem 5: Border
Write a new function called addBorder( image, borderWidth ) that will put a red border around the image.
Modify the program and ask the user to pick a color first, then pass this color to the function addBorder( image, borderWidth, color ) which will put a border all around the image.
Problem 6: B&W image with Colored Border
Make your program output a version of your colored image that will be black and white with a colored border around it.
Problem 7: Diagonal
- Replace the nested for-loops by this single loop like this:
for x in range(0,getWidth(image)):
y = min( x, getHeight( image )-1 )
pixel = getPixel (image, x, y)
...
- and set the color of that pixel to red. What do you get?
- Modify your function so that it puts a red diagonal cross over the image.