Bird
Raised Fist0
Computer Visionml~10 mins

Edge detection (Canny) in Computer Vision - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to read an image using OpenCV.

Computer Vision
import cv2

image = cv2.[1]('image.jpg')
Drag options to blanks, or click blank then click option'
Aimwrite
Bimshow
CcvtColor
Dimread
Attempts:
3 left
💡 Hint
Common Mistakes
Using cv2.imshow instead of cv2.imread to load the image.
Using cv2.imwrite which saves an image instead of loading.
2fill in blank
medium

Complete the code to convert the image to grayscale.

Computer Vision
gray = cv2.[1](image, cv2.COLOR_BGR2GRAY)
Drag options to blanks, or click blank then click option'
Aimread
BcvtColor
Cblur
Dthreshold
Attempts:
3 left
💡 Hint
Common Mistakes
Using cv2.imread again instead of converting color.
Using cv2.blur which smooths the image, not changes color.
3fill in blank
hard

Fix the error in the code to apply Canny edge detection.

Computer Vision
edges = cv2.Canny(gray, [1], 150)
Drag options to blanks, or click blank then click option'
A50
B'50'
CNone
Dgray
Attempts:
3 left
💡 Hint
Common Mistakes
Passing threshold as a string instead of integer.
Passing None which causes runtime error.
4fill in blank
hard

Fill both blanks to display the edges image and wait for a key press.

Computer Vision
cv2.[1]('Edges', edges)
cv2.[2](0)
Drag options to blanks, or click blank then click option'
Aimshow
BwaitKey
Cimread
DdestroyAllWindows
Attempts:
3 left
💡 Hint
Common Mistakes
Using cv2.imread instead of imshow to display.
Forgetting to wait for a key press causing window to close immediately.
5fill in blank
hard

Fill all three blanks to save the edges image, close windows, and print success message.

Computer Vision
cv2.[1]('edges_output.jpg', edges)
cv2.[2]()
print([3])
Drag options to blanks, or click blank then click option'
Aimwrite
BdestroyAllWindows
C'Edges image saved successfully!'
Dimshow
Attempts:
3 left
💡 Hint
Common Mistakes
Using imshow instead of imwrite to save image.
Not closing windows causing program to hang.
Printing without quotes causing error.

Practice

(1/5)
1. What is the main purpose of the Canny edge detection algorithm in computer vision?
easy
A. To resize images without losing quality
B. To colorize black and white images
C. To blur an image for noise reduction
D. To find clear edges in an image by detecting boundaries

Solution

  1. Step 1: Understand the goal of edge detection

    Edge detection aims to find where objects start and end by detecting sharp changes in brightness.
  2. Step 2: Recognize Canny's role

    Canny edge detection specifically finds clear edges by using gradients and thresholds to highlight boundaries.
  3. Final Answer:

    To find clear edges in an image by detecting boundaries -> Option D
  4. Quick Check:

    Edge detection = finding boundaries [OK]
Hint: Edges show object borders clearly in images [OK]
Common Mistakes:
  • Confusing edge detection with image coloring
  • Thinking Canny blurs images
  • Assuming it resizes images
2. Which of the following is the correct way to call the Canny edge detector function in OpenCV (Python)?
easy
A. cv2.Canny(image, threshold1, threshold2)
B. cv2.canny(image, threshold1, threshold2)
C. cv2.Canny(image, threshold2, threshold1)
D. cv2.Canny(image)

Solution

  1. Step 1: Recall OpenCV function naming

    OpenCV functions are case-sensitive; the correct function is Canny with uppercase C.
  2. Step 2: Check required parameters

    The function requires the image and two threshold values in order: low threshold first, then high threshold.
  3. Final Answer:

    cv2.Canny(image, threshold1, threshold2) -> Option A
  4. Quick Check:

    Correct function name and parameter order = A [OK]
Hint: Function names are case-sensitive; check parameter order [OK]
Common Mistakes:
  • Using lowercase 'canny' instead of 'Canny'
  • Swapping threshold1 and threshold2
  • Omitting required threshold parameters
3. Given the following Python code snippet using OpenCV, what will be the shape of the output image after applying Canny edge detection?
import cv2
image = cv2.imread('photo.jpg')
edges = cv2.Canny(image, 100, 200)
print(edges.shape)
medium
A. (height, width)
B. (height, width, 3)
C. (width, height)
D. (height, width, 1)

Solution

  1. Step 1: Understand input image shape

    Original image read by cv2.imread is usually (height, width, 3) for color images.
  2. Step 2: Check output of cv2.Canny

    Canny outputs a single-channel (grayscale) edge map, so shape is (height, width) without color channels.
  3. Final Answer:

    (height, width) -> Option A
  4. Quick Check:

    Canny output is grayscale edges = (height, width) [OK]
Hint: Canny output is single-channel grayscale image [OK]
Common Mistakes:
  • Assuming output keeps 3 color channels
  • Confusing width and height order
  • Expecting a 3D shape for edges
4. You run Canny edge detection with thresholds 50 and 150 but get too many noisy edges. Which fix below correctly reduces noise in the output?
medium
A. Use a color image instead of grayscale
B. Decrease both thresholds to lower values
C. Increase both thresholds to higher values
D. Remove Gaussian blur before Canny

Solution

  1. Step 1: Understand threshold effect on noise

    Lower thresholds detect more edges including noise; higher thresholds reduce noise by ignoring weak edges.
  2. Step 2: Choose correct adjustment

    Increasing thresholds filters out weak noisy edges, improving edge quality.
  3. Final Answer:

    Increase both thresholds to higher values -> Option C
  4. Quick Check:

    Higher thresholds reduce noise in edges [OK]
Hint: Higher thresholds filter out weak noisy edges [OK]
Common Mistakes:
  • Lowering thresholds increases noise
  • Using color images directly confuses Canny
  • Skipping blur preprocessing increases noise
5. You want to detect edges on a noisy grayscale image using Canny. Which sequence of steps will best improve edge detection results?
hard
A. Apply median blur, then Canny with low thresholds, then erode edges
B. Apply Gaussian blur, then Canny with tuned thresholds, then dilate edges
C. Apply Canny directly with default thresholds, then convert to color
D. Resize image larger, then apply Canny with high thresholds, then invert edges

Solution

  1. Step 1: Preprocess noisy image with Gaussian blur

    Gaussian blur smooths noise while preserving edges, improving Canny input.
  2. Step 2: Apply Canny with tuned thresholds

    Adjust thresholds to balance edge detection and noise filtering.
  3. Step 3: Use dilation to strengthen edges

    Dilation thickens edges, making them clearer for further processing.
  4. Final Answer:

    Apply Gaussian blur, then Canny with tuned thresholds, then dilate edges -> Option B
  5. Quick Check:

    Blur + tuned thresholds + dilation = best edge detection [OK]
Hint: Blur first, tune thresholds, then enhance edges [OK]
Common Mistakes:
  • Using low thresholds increases noise
  • Skipping blur causes noisy edges
  • Converting to color after Canny is useless