Bird
Raised Fist0
Computer Visionml~20 mins

Geometric transforms (rotate, flip, crop) in Computer Vision - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Geometric Transform Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of rotating an image by 90 degrees clockwise
Given a 3x3 grayscale image represented as a 2D list, what is the output after rotating it 90 degrees clockwise?
Computer Vision
import numpy as np
image = np.array([[1,2,3],[4,5,6],[7,8,9]])
rotated = np.rot90(image, k=-1)
print(rotated.tolist())
A[[7,4,1],[8,5,2],[9,6,3]]
B[[9,8,7],[6,5,4],[3,2,1]]
C[[3,6,9],[2,5,8],[1,4,7]]
D[[1,2,3],[4,5,6],[7,8,9]]
Attempts:
2 left
💡 Hint
Rotating 90 degrees clockwise means columns become rows from bottom to top.
❓ Model Choice
intermediate
1:30remaining
Choosing the correct transform for horizontal flip
Which numpy operation correctly flips a 2D image array horizontally?
Anp.transpose(image)
Bnp.flipud(image)
Cnp.rot90(image, k=2)
Dnp.fliplr(image)
Attempts:
2 left
💡 Hint
Horizontal flip means flipping left to right.
🔧 Debug
advanced
2:00remaining
Identify the error in cropping code
What error will this code raise when cropping a 2D image array?
Computer Vision
import numpy as np
image = np.arange(16).reshape(4,4)
cropped = image[1:3, 3:1]
print(cropped)
ATypeError: slice indices must be integers or None or have an __index__ method
BIndexError: slice indices must be increasing
CReturns an empty array with shape (2,0)
DSyntaxError due to invalid slice
Attempts:
2 left
💡 Hint
Check how slicing with start index greater than stop index behaves in numpy.
❓ Hyperparameter
advanced
1:30remaining
Effect of interpolation parameter in rotation
When rotating an image using OpenCV's cv2.warpAffine, which interpolation method preserves the most image quality for small rotations?
Acv2.INTER_CUBIC
Bcv2.INTER_LINEAR
Ccv2.INTER_AREA
Dcv2.INTER_NEAREST
Attempts:
2 left
💡 Hint
Higher order interpolation methods produce smoother results.
❓ Metrics
expert
2:30remaining
Evaluating effect of geometric transforms on classification accuracy
You apply random rotations and flips as data augmentation during training a CNN classifier. After training, which metric change best indicates the augmentation improved model generalization?
ATraining accuracy increases but validation accuracy decreases
BTraining accuracy decreases but validation accuracy increases
CBoth training and validation accuracy decrease
DBoth training and validation accuracy increase
Attempts:
2 left
💡 Hint
Good augmentation reduces overfitting, so training accuracy may drop but validation improves.

Practice

(1/5)
1. Which geometric transform flips an image horizontally, like looking in a mirror?
easy
A. Horizontal flip
B. Rotate 90 degrees
C. Crop center
D. Vertical flip

Solution

  1. Step 1: Understand horizontal flip

    Horizontal flip reverses the image left to right, like a mirror reflection.
  2. Step 2: Compare with other transforms

    Rotate changes orientation, crop cuts part of image, vertical flip flips top to bottom.
  3. Final Answer:

    Horizontal flip -> Option A
  4. Quick Check:

    Mirror image = Horizontal flip [OK]
Hint: Mirror effect means horizontal flip [OK]
Common Mistakes:
  • Confusing vertical flip with horizontal flip
  • Thinking rotate is flipping
  • Mixing crop with flip
2. Which Python code correctly rotates an image by 90 degrees clockwise using OpenCV?
easy
A. rotated = cv2.crop(image, (0,0,100,100))
B. rotated = cv2.flip(image, 1)
C. rotated = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)
D. rotated = cv2.rotate(image, cv2.ROTATE_180)

Solution

  1. Step 1: Identify OpenCV rotate syntax

    cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE) rotates image 90 degrees clockwise.
  2. Step 2: Check other options

    Flip flips image, crop is not a cv2 function, ROTATE_180 rotates 180 degrees, not 90.
  3. Final Answer:

    rotated = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE) -> Option C
  4. Quick Check:

    Rotate 90 clockwise = cv2.ROTATE_90_CLOCKWISE [OK]
Hint: Use cv2.rotate with ROTATE_90_CLOCKWISE for 90° turn [OK]
Common Mistakes:
  • Using flip instead of rotate
  • Wrong rotate constant
  • Trying crop as a cv2 function
3. What will be the shape of the image after applying this code?
import cv2
image = cv2.imread('img.jpg')
cropped = image[50:150, 30:130]
medium
A. (100, 100, 3)
B. (150, 130, 3)
C. (80, 100, 3)
D. (100, 80, 3)

Solution

  1. Step 1: Calculate crop height

    Height = 150 - 50 = 100 pixels.
  2. Step 2: Calculate crop width

    Width = 130 - 30 = 100 pixels.
  3. Step 3: Confirm channels

    Image has 3 color channels (RGB/BGR).
  4. Final Answer:

    (100, 100, 3) -> Option A
  5. Quick Check:

    Crop size = (height, width, channels) = (100, 100, 3) [OK]
Hint: Subtract start from end index for height and width [OK]
Common Mistakes:
  • Mixing width and height order
  • Forgetting zero-based indexing
  • Ignoring color channels
4. This code tries to flip an image vertically but causes an error. What is wrong?
import cv2
image = cv2.imread('img.jpg')
flipped = cv2.flip(image, 2)
medium
A. image must be grayscale for flip
B. Flip code 2 is invalid; use 0 for vertical flip
C. cv2.flip requires three arguments
D. cv2.flip does not flip images

Solution

  1. Step 1: Check cv2.flip flipCode values

    flipCode=0 flips vertically, 1 flips horizontally, -1 flips both axes.
  2. Step 2: Identify invalid flipCode

    flipCode=2 is invalid and causes error.
  3. Final Answer:

    Flip code 2 is invalid; use 0 for vertical flip -> Option B
  4. Quick Check:

    Vertical flip = flipCode 0 [OK]
Hint: Use flipCode 0 for vertical flip in cv2.flip [OK]
Common Mistakes:
  • Using wrong flipCode values
  • Thinking flip needs grayscale
  • Assuming cv2.flip needs extra args
5. You want to rotate an image 90 degrees clockwise and then crop the central 100x100 pixels. Which code correctly does this?
hard
A. crop = img[50:150, 50:150] rot = cv2.rotate(crop, cv2.ROTATE_90_CLOCKWISE)
B. rot = cv2.flip(img, 1) crop = rot[rot.shape[0]//2-50:rot.shape[0]//2+50, rot.shape[1]//2-50:rot.shape[1]//2+50]
C. rot = cv2.rotate(img, cv2.ROTATE_180) crop = rot[0:100, 0:100]
D. rot = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) crop = rot[rot.shape[0]//2-50:rot.shape[0]//2+50, rot.shape[1]//2-50:rot.shape[1]//2+50]

Solution

  1. Step 1: Rotate image 90 degrees clockwise

    Use cv2.rotate with ROTATE_90_CLOCKWISE on original image.
  2. Step 2: Crop center 100x100 pixels

    Calculate center indices and slice 50 pixels before and after center in both dimensions.
  3. Step 3: Verify order and correctness

    Rotation first, then crop center; other options rotate wrong angle or crop before rotate.
  4. Final Answer:

    Rotate then crop center 100x100 -> Option D
  5. Quick Check:

    Rotate 90° clockwise then center crop = rot = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) crop = rot[rot.shape[0]//2-50:rot.shape[0]//2+50, rot.shape[1]//2-50:rot.shape[1]//2+50] [OK]
Hint: Rotate first, then crop center using shape indices [OK]
Common Mistakes:
  • Cropping before rotating changes crop area
  • Using wrong rotate angle
  • Using flip instead of rotate
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard