Bird
Raised Fist0
Drone Programmingprogramming~20 mins

Camera stream access with OpenCV in Drone Programming - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
OpenCV Camera Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this OpenCV camera stream code?

Consider this Python code snippet using OpenCV to access a camera stream. What will it print when run on a system with a working camera?

Drone Programming
import cv2
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
print(ret)
cap.release()
ATrue
BFalse
CNone
DRaises an exception
Attempts:
2 left
💡 Hint

The ret variable tells if the frame was captured successfully.

🧠 Conceptual
intermediate
1:30remaining
Which OpenCV method releases the camera resource?

When you finish using a camera stream in OpenCV, which method should you call to free the camera for other programs?

Acap.stop()
Bcap.close()
Ccap.release()
Dcv2.destroyAllWindows()
Attempts:
2 left
💡 Hint

Think about the method that frees hardware resources.

🔧 Debug
advanced
2:30remaining
Why does this OpenCV code fail to show the camera stream window?

Look at this code snippet. It does not display the camera stream window as expected. What is the reason?

Drone Programming
import cv2
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
if ret:
    cv2.imshow('Camera', frame)
cap.release()
AMissing cv2.waitKey() call to process window events
BIncorrect camera index in VideoCapture
CFrame is None because cap.read() failed
Dcv2.imshow() requires a second argument with window size
Attempts:
2 left
💡 Hint

OpenCV windows need event processing to appear and refresh.

📝 Syntax
advanced
1:30remaining
Which option correctly opens a camera stream and reads a frame in OpenCV?

Choose the code snippet that correctly opens the default camera and reads one frame.

A
cap = cv2.VideoCapture(0)
frame, ret = cap.read()
B
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
C
cap = cv2.VideoCapture()
ret, frame = cap.read(0)
D
cap = cv2.VideoCapture(0)
ret = cap.read(frame)
Attempts:
2 left
💡 Hint

Remember the order of returned values from cap.read().

🚀 Application
expert
3:00remaining
How many frames will this OpenCV loop capture before stopping?

Analyze this code that captures frames from a camera and stops after 5 frames. How many frames does it actually capture?

Drone Programming
import cv2
cap = cv2.VideoCapture(0)
count = 0
while count < 5:
    ret, frame = cap.read()
    if not ret:
        break
    count += 1
cap.release()
print(count)
ARaises an error
B4
C0
D5
Attempts:
2 left
💡 Hint

The loop increments count only when a frame is successfully read.

Practice

(1/5)
1. What does the cv2.VideoCapture(0) function do in OpenCV when working with a drone's camera?
easy
A. It closes any open camera streams.
B. It saves the video stream to a file named '0'.
C. It opens the default camera stream for capturing video frames.
D. It applies a filter to the video stream.

Solution

  1. Step 1: Understand the purpose of cv2.VideoCapture

    The function cv2.VideoCapture() is used to open a connection to a camera or video file.
  2. Step 2: Interpret the argument 0

    Passing 0 as an argument tells OpenCV to open the default camera device, usually the first connected camera.
  3. Final Answer:

    It opens the default camera stream for capturing video frames. -> Option C
  4. Quick Check:

    cv2.VideoCapture(0) opens default camera [OK]
Hint: 0 means default camera device in cv2.VideoCapture [OK]
Common Mistakes:
  • Thinking it saves video instead of opening camera
  • Confusing argument 0 with file name
  • Assuming it closes camera streams
2. Which of the following is the correct syntax to read a frame from a camera stream stored in variable cap?
easy
A. ret, frame = cap.read()
B. frame, ret = cap.read()
C. cap.read(frame, ret)
D. cap.read = (ret, frame)

Solution

  1. Step 1: Recall the return order of cap.read()

    The cap.read() method returns two values: a boolean ret and the image frame frame.
  2. Step 2: Match the correct variable order

    The correct order is ret, frame = cap.read(), where ret indicates success and frame holds the image.
  3. Final Answer:

    ret, frame = cap.read() -> Option A
  4. Quick Check:

    cap.read() returns (ret, frame) [OK]
Hint: Remember cap.read() returns ret first, then frame [OK]
Common Mistakes:
  • Swapping ret and frame variables
  • Using assignment inside parentheses incorrectly
  • Trying to assign with equal sign inside method call
3. What will the following code print if the camera stream opens successfully and a frame is captured?
import cv2
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
print(ret)
cap.release()
medium
A. None
B. False
C. An error message
D. True

Solution

  1. Step 1: Understand cap.read() return value

    If the camera opens and a frame is successfully read, ret will be True.
  2. Step 2: Analyze the print statement

    The code prints the value of ret, so it will print True if successful.
  3. Final Answer:

    True -> Option D
  4. Quick Check:

    Successful frame read returns True [OK]
Hint: ret is True if frame read succeeds, else False [OK]
Common Mistakes:
  • Assuming ret is the frame itself
  • Expecting printed frame data instead of boolean
  • Not releasing the camera after use
4. Identify the error in this code snippet that tries to display a live camera feed:
import cv2
cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read
    if not ret:
        break
    cv2.imshow('Camera', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
medium
A. Missing parentheses after cap.read
B. Incorrect window name in imshow
C. waitKey argument should be 0 instead of 1
D. cap.release() should be inside the loop

Solution

  1. Step 1: Check method call syntax

    The line ret, frame = cap.read is missing parentheses. It should be cap.read() to call the method.
  2. Step 2: Understand impact of missing parentheses

    Without parentheses, cap.read is a method reference, not a call, so unpacking fails or returns wrong values.
  3. Final Answer:

    Missing parentheses after cap.read -> Option A
  4. Quick Check:

    Method calls need () after name [OK]
Hint: Always add () to call methods like cap.read() [OK]
Common Mistakes:
  • Forgetting parentheses on method calls
  • Misunderstanding waitKey timing
  • Releasing camera inside loop causing errors
5. You want to capture video from a drone's camera and save only frames where the video stream is successfully read. Which code snippet correctly implements this using OpenCV?
hard
A. cap = cv2.VideoCapture(0) while True: frame, ret = cap.read() if ret: cv2.imwrite('frame.jpg', frame) cap.release()
B. cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if ret: cv2.imwrite('frame.jpg', frame) else: break cap.release()
C. cap = cv2.VideoCapture(0) while True: ret, frame = cap.read if ret: cv2.imwrite('frame.jpg', frame) else: break cap.release()
D. cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() cv2.imwrite('frame.jpg', frame) if not ret: break cap.release()

Solution

  1. Step 1: Verify correct method call and variable order

    cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if ret: cv2.imwrite('frame.jpg', frame) else: break cap.release() correctly calls cap.read() and assigns ret, frame in the right order.
  2. Step 2: Check logic for saving frames

    It saves the frame only if ret is True, otherwise breaks the loop, which is correct behavior.
  3. Final Answer:

    Correctly captures and saves frames only when read succeeds -> Option B
  4. Quick Check:

    Call cap.read() and check ret before saving [OK]
Hint: Save frames only if ret is True after cap.read() [OK]
Common Mistakes:
  • Swapping ret and frame variables
  • Missing parentheses on cap.read
  • Saving frames even when ret is False
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