module 'cv2' has no attribute 'read'

Question:

import cv2 as cv

frameWidth = 640
frameHeight = 800

capture = cv.VideoCapture(0)
capture.set(3, frameWidth)
capture.set(4, frameHeight)
capture.set(10, 140)

while True:
    passed, frame = cv.read()
    cv.imshow('Camera Capture', frame)
    if cv.waitKey(1) & 0xFF == ord('q'):
        break

capture.release()
capture.destroyAllWindows()

I’ve been trying to capture my camera using OpenCV. However it gives the error "module ‘cv2’ has no attribute ‘read’" I looked at various codes and sources including OpenCV’s own documentation. They all use the same code without errors. I tried uninstalling and installing opencv and opencv-contrib.

Asked By: Masidy

||

Answers:

In your section of code:

while True:
    passed, frame = cv.read()
    cv.imshow('Camera Capture', frame)
    if cv.waitKey(1) & 0xFF == ord('q'):
        break

The issue is that you are trying to call read() on the module, rather you want to call read on the cv.VideoCapture object you created called capture so it should be as such.

while True:
    passed, frame = capture.read()
    cv.imshow('Camera Capture', frame)
    if cv.waitKey(1) & 0xFF == ord('q'):
        break
Answered By: Tom Myddeltyn

You need to use the VideoCapture to read your cam, instead

passed, frame = capture.read()
Answered By: phelipecomph
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.