Bird
Raised Fist0
Computer Visionml~20 mins

Writing/saving images 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 - Writing/saving images
Problem:You have processed images in your computer vision project and want to save them correctly to disk for later use or sharing.
Current Metrics:Currently, images are displayed correctly in memory but not saved properly, resulting in corrupted or unreadable files.
Issue:The images are not saved with the correct format or encoding, causing file corruption or loss of data.
Your Task
Save processed images to disk in a standard format (e.g., PNG or JPEG) ensuring the saved files are readable and correctly represent the image data.
Use Python and OpenCV or PIL libraries only.
Do not change the image processing pipeline, only focus on saving the images.
Ensure the saved image files can be opened by standard image viewers.
Hint 1
Hint 2
Hint 3
Solution
Computer Vision
import cv2
from PIL import Image
import numpy as np

# Example image: create a simple red square using numpy
image = np.zeros((100, 100, 3), dtype=np.uint8)
image[:] = (0, 0, 255)  # Red color in BGR for OpenCV

# Saving with OpenCV
cv2.imwrite('red_square_opencv.png', image)

# Convert BGR to RGB for PIL
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Saving with PIL
pil_image = Image.fromarray(image_rgb)
pil_image.save('red_square_pil.png')
Used cv2.imwrite() to save the image in PNG format with correct BGR color order.
Converted image color from BGR to RGB before saving with PIL to ensure correct colors.
Saved image using PIL's Image.save() method with PNG format.
Results Interpretation

Before: Images were not saved or saved incorrectly, resulting in corrupted files.

After: Images saved using cv2.imwrite() and PIL's save() method open correctly and display the expected red square.

Saving images requires using the right library functions and correct color formats. OpenCV uses BGR color order, while PIL uses RGB, so conversion is necessary to preserve colors.
Bonus Experiment
Try saving images in different formats like JPEG and BMP and compare file sizes and quality.
💡 Hint
Change the file extension in the save function and observe differences in saved file properties.

Practice

(1/5)
1. What does the function cv2.imwrite() do in computer vision?
easy
A. Converts an image to grayscale
B. Reads an image from a file
C. Displays an image in a window
D. Saves an image to a file on disk

Solution

  1. Step 1: Understand the purpose of cv2.imwrite()

    This function is used to save image data to a file on your computer.
  2. Step 2: Differentiate from other OpenCV functions

    Functions like cv2.imread() read images, and cv2.imshow() display images, but cv2.imwrite() specifically saves images.
  3. Final Answer:

    Saves an image to a file on disk -> Option D
  4. Quick Check:

    cv2.imwrite() = Save image [OK]
Hint: Remember 'imwrite' means 'image write' to file [OK]
Common Mistakes:
  • Confusing imwrite with imread
  • Thinking it displays images
  • Assuming it converts image formats automatically
2. Which of the following is the correct syntax to save an image stored in variable img to a file named output.jpg using OpenCV?
easy
A. cv2.save('output.jpg', img)
B. cv2.imwrite('output.jpg', img)
C. cv2.write('output.jpg', img)
D. cv2.saveImage('output.jpg', img)

Solution

  1. Step 1: Recall the correct OpenCV function name

    The function to save images is cv2.imwrite(), not save or write.
  2. Step 2: Check the argument order

    The first argument is the filename as a string, the second is the image variable.
  3. Final Answer:

    cv2.imwrite('output.jpg', img) -> Option B
  4. Quick Check:

    Correct function and argument order = cv2.imwrite('output.jpg', img) [OK]
Hint: Use 'imwrite' with filename first, then image [OK]
Common Mistakes:
  • Using non-existent functions like cv2.save
  • Swapping argument order
  • Missing quotes around filename
3. What will be the output of the following code snippet?
import cv2
img = cv2.imread('input.png')
success = cv2.imwrite('saved.png', img)
print(success)
medium
A. True if image saved successfully, False otherwise
B. The saved image data
C. The filename 'saved.png'
D. An error message

Solution

  1. Step 1: Understand cv2.imwrite() return value

    This function returns a boolean: True if saving worked, False if it failed.
  2. Step 2: Analyze the print statement

    The code prints the boolean stored in success, so output is True or False.
  3. Final Answer:

    True if image saved successfully, False otherwise -> Option A
  4. Quick Check:

    imwrite() returns success boolean [OK]
Hint: imwrite returns True/False for success [OK]
Common Mistakes:
  • Expecting image data as output
  • Thinking it prints filename
  • Assuming it throws error on failure
4. Identify the error in this code snippet that tries to save an image:
import cv2
img = cv2.imread('photo.jpg')
cv2.imwrite(img, 'output.jpg')
medium
A. cv2.imread cannot read jpg files
B. cv2.imwrite requires file extension in filename
C. Arguments to cv2.imwrite are in wrong order
D. cv2.imwrite cannot save images

Solution

  1. Step 1: Check cv2.imwrite() argument order

    The first argument must be the filename string, second the image data.
  2. Step 2: Identify the mistake in the code

    The code passes img first and filename second, which is incorrect.
  3. Final Answer:

    Arguments to cv2.imwrite are in wrong order -> Option C
  4. Quick Check:

    Filename first, image second in imwrite() [OK]
Hint: Filename must be first argument in imwrite() [OK]
Common Mistakes:
  • Swapping filename and image arguments
  • Assuming imread can't read jpg
  • Thinking imwrite can't save images
5. You want to save a grayscale image stored in gray_img as a PNG file and ensure the save was successful. Which code snippet correctly does this?
hard
A. if cv2.imwrite('gray.png', gray_img): print('Saved successfully') else: print('Save failed')
B. cv2.imwrite(gray_img, 'gray.png') and print('Saved successfully')
C. cv2.imwrite('gray.png', gray_img) print('Saved successfully')
D. if cv2.imwrite('gray.png'): print('Saved successfully')

Solution

  1. Step 1: Use cv2.imwrite() with correct arguments

    The first argument is the filename string, second is the image data variable.
  2. Step 2: Check the return value to confirm success

    Use an if statement to check if cv2.imwrite() returns True, then print success message; else print failure.
  3. Final Answer:

    if cv2.imwrite('gray.png', gray_img): print('Saved successfully') else: print('Save failed') -> Option A
  4. Quick Check:

    Check imwrite() return before confirming save [OK]
Hint: Check imwrite() return value to confirm save success [OK]
Common Mistakes:
  • Swapping arguments in imwrite
  • Not checking if save succeeded
  • Passing wrong argument types