Bird
Raised Fist0
Computer Visionml~15 mins

First image processing program in Computer Vision - ML Experiment: Train & Evaluate

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Experiment - First image processing program
Problem:You want to create a simple program that loads an image, converts it to grayscale, and shows the result. This helps you understand basic image processing.
Current Metrics:No current metrics because the program is not yet created.
Issue:No image processing done yet. Need to write code to load and transform the image.
Your Task
Write a program that loads a color image, converts it to grayscale, and displays both the original and grayscale images side by side.
Use Python with OpenCV library.
Do not use any advanced image processing techniques beyond grayscale conversion.
The program must run without errors and display images in windows.
Hint 1
Hint 2
Hint 3
Hint 4
Solution
Computer Vision
import cv2

# Load the color image
image = cv2.imread('sample.jpg')  # Replace 'sample.jpg' with your image file path

# Check if image loaded successfully
if image is None:
    print('Error: Image not found or unable to load.')
    exit()

# Convert the image to grayscale
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Show original image
cv2.imshow('Original Image', image)

# Show grayscale image
cv2.imshow('Grayscale Image', gray_image)

# Wait until a key is pressed
cv2.waitKey(0)

# Close all windows
cv2.destroyAllWindows()
Added code to load an image using OpenCV.
Converted the loaded image to grayscale.
Displayed both original and grayscale images in separate windows.
Added error handling if image file is not found.
Results Interpretation

Before: No image processing done, no output.

After: Program loads an image, converts it to grayscale, and shows both images. You see the original colors and the black-and-white version side by side.

This experiment shows how to perform basic image loading and transformation. Converting to grayscale is a simple but important step in many image processing tasks.
Bonus Experiment
Now try to resize the image to half its original size before converting to grayscale and displaying.
💡 Hint
Use cv2.resize() with appropriate width and height parameters before the grayscale conversion.

Practice

(1/5)
1. What does the OpenCV function imread do in an image processing program?
easy
A. It displays an image on the screen.
B. It reads an image file and loads it into the program.
C. It converts an image from color to grayscale.
D. It saves an image to a file.

Solution

  1. Step 1: Understand the purpose of imread

    The function imread is used to load an image from a file into the program's memory.
  2. Step 2: Differentiate from other functions

    Functions like imshow display images, and cvtColor changes image colors, so they do not read files.
  3. Final Answer:

    It reads an image file and loads it into the program. -> Option B
  4. Quick Check:

    imread = load image [OK]
Hint: imread always loads images from files [OK]
Common Mistakes:
  • Confusing imread with imshow
  • Thinking imread changes image colors
  • Assuming imread saves images
2. Which of the following is the correct syntax to display an image stored in variable img using OpenCV?
easy
A. cv2.display(img)
B. cv2.showimage(img)
C. cv2.show('Window', img)
D. cv2.imshow('Window', img)

Solution

  1. Step 1: Recall the OpenCV display function

    The correct function to show an image is cv2.imshow, which takes a window name and the image variable.
  2. Step 2: Check the syntax of options

    Only cv2.imshow('Window', img) uses cv2.imshow with correct parameters: a string window name and the image.
  3. Final Answer:

    cv2.imshow('Window', img) -> Option D
  4. Quick Check:

    imshow = show image [OK]
Hint: imshow needs a window name and image [OK]
Common Mistakes:
  • Using non-existent functions like display or showimage
  • Forgetting the window name argument
  • Swapping argument order
3. What will be the output of this code snippet?
import cv2
img = cv2.imread('photo.jpg')
print(img.shape)
medium
A. It prints the image pixel values.
B. It raises an error because shape is not valid.
C. It prints the dimensions of the image as (height, width, channels).
D. It prints the file size of 'photo.jpg'.

Solution

  1. Step 1: Understand what img.shape returns

    In OpenCV, img.shape gives the dimensions of the image as a tuple: (height, width, number of color channels).
  2. Step 2: Differentiate from other outputs

    It does not print pixel values or file size, and shape is a valid attribute for images loaded by imread.
  3. Final Answer:

    It prints the dimensions of the image as (height, width, channels). -> Option C
  4. Quick Check:

    img.shape = image size [OK]
Hint: shape shows image size and channels [OK]
Common Mistakes:
  • Expecting pixel data instead of shape
  • Thinking shape is a method, not attribute
  • Confusing file size with image dimensions
4. Identify the error in this code snippet:
import cv2
img = cv2.imread('image.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray Image')
cv2.waitKey(0)
cv2.destroyAllWindows()
medium
A. Missing the image argument in cv2.imshow function.
B. cv2.cvtColor cannot convert color images.
C. cv2.waitKey requires an argument of 1, not 0.
D. cv2.destroyAllWindows should be called before imshow.

Solution

  1. Step 1: Check the usage of cv2.imshow

    The function cv2.imshow requires two arguments: a window name and the image to display. Here, the image argument is missing.
  2. Step 2: Verify other function calls

    cv2.cvtColor correctly converts color images, waitKey(0) waits indefinitely, and destroyAllWindows is correctly placed after showing images.
  3. Final Answer:

    Missing the image argument in cv2.imshow function. -> Option A
  4. Quick Check:

    imshow needs image argument [OK]
Hint: imshow always needs image to show [OK]
Common Mistakes:
  • Forgetting the image argument in imshow
  • Misunderstanding waitKey argument
  • Calling destroyAllWindows too early
5. You want to write a program that reads an image, converts it to grayscale, and then saves the grayscale image. Which sequence of OpenCV functions is correct?
hard
A. cv2.imread() -> cv2.cvtColor() -> cv2.imwrite()
B. cv2.imshow() -> cv2.cvtColor() -> cv2.imwrite()
C. cv2.imread() -> cv2.imshow() -> cv2.cvtColor()
D. cv2.imwrite() -> cv2.imread() -> cv2.cvtColor()

Solution

  1. Step 1: Understand the task steps

    The program must first read the image, then convert it to grayscale, and finally save the new image.
  2. Step 2: Match functions to steps

    cv2.imread() reads the image, cv2.cvtColor() converts color spaces, and cv2.imwrite() saves the image to a file.
  3. Final Answer:

    cv2.imread() -> cv2.cvtColor() -> cv2.imwrite() -> Option A
  4. Quick Check:

    Read -> Convert -> Save = imread, cvtColor, imwrite [OK]
Hint: Read first, convert second, save last [OK]
Common Mistakes:
  • Trying to save before reading
  • Showing image before converting
  • Mixing order of functions