简体   繁体   English

属性错误模块 'cv2.cv2' 没有属性 'videocapture'

[英]attributeerror module 'cv2.cv2' has no attribute 'videocapture'

My project is a face recognition attendance system.我的项目是一个人脸识别考勤系统。 When I run in my pycharm project why does it show me error:当我在我的 pycharm 项目中运行时,为什么它会显示错误:

attributeerror module 'cv2.cv2' has no attribute 'videocapture.*属性错误模块 'cv2.cv2' 没有属性 'videocapture.*

When you run my code my project is automatically taking attendance and saves to another file.当您运行我的代码时,我的项目会自动出勤并保存到另一个文件中。

my code:我的代码:

import cv2
import numpy as np
import face_recognition
import os
from datetime import datetime

# from PIL import ImageGrab

path = 'Training_images'
images = []
classNames = []
myList = os.listdir(path)
print(myList)
for cl in myList:
    curImg = cv2.imread(f'{path}/{cl}')
    images.append(curImg)
    classNames.append(os.path.splitext(cl)[0])
print(classNames)


def findEncodings(images):
    encodeList = []


    for img in images:
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        encode = face_recognition.face_encodings(img)[0]
        encodeList.append(encode)
    return encodeList


def markAttendance(name):
    with open('Attendance.csv', 'r+') as f:
        myDataList = f.readlines()


        nameList = []
        for line in myDataList:
            entry = line.split(',')
            nameList.append(entry[0])
            if name not in nameList:
                now = datetime.now()
                dtString = now.strftime('%H:%M:%S')
                f.writelines(f'\n{name},{dtString}')

#### FOR CAPTURING SCREEN RATHER THAN WEBCAM
# def captureScreen(bbox=(300,300,690+300,530+300)):
#     capScr = np.array(ImageGrab.grab(bbox))
#     capScr = cv2.cvtColor(capScr, cv2.COLOR_RGB2BGR)
#     return capScr

encodeListKnown = findEncodings(images)
print('Encoding Complete')

cap = cv2.VideoCapture(0)

while True:
    success, img = cap.read()
# img = captureScreen()
    imgS = cv2.resize(img, (0, 0), None, 0.25, 0.25)
    imgS = cv2.cvtColor(imgS, cv2.COLOR_BGR2RGB)

    facesCurFrame = face_recognition.face_locations(imgS)
    encodesCurFrame = face_recognition.face_encodings(imgS, facesCurFrame)

    for encodeFace, faceLoc in zip(encodesCurFrame, facesCurFrame):
        matches = face_recognition.compare_faces(encodeListKnown, encodeFace)
        faceDis = face_recognition.face_distance(encodeListKnown, encodeFace)
# print(faceDis)
        matchIndex = np.argmin(faceDis)

        if matches[matchIndex]:
            name = classNames[matchIndex].upper()
# print(name)
            y1, x2, y2, x1 = faceLoc
            y1, x2, y2, x1 = y1 * 4, x2 * 4, y2 * 4, x1 * 4
            cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.rectangle(img, (x1, y2 - 35), (x2, y2), (0, 255, 0), cv2.FILLED)
            cv2.putText(img, name, (x1 + 6, y2 - 6), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 255), 2)
            markAttendance(name)

    cv2.imshow('Webcam', img)
    cv2.waitKey(1)

Couple of place where it could potentially go wrong.几个地方可能会出现 go 错误。

  • Improper installation安装不当
  • Some file with a name cv2 in the working directory.工作目录中一些名为 cv2 的文件。

If you haven't installed opencv for python, go ahead and install first by running this command on Command prompt(Windows) or terminal(linux)如果您还没有为 python、go 预先安装 opencv,请先在命令提示符(Windows)或终端(Linux)上运行此命令进行安装

On linux:在 linux 上:

pip3 install opencv-python

On windows:在 windows 上:

python -m pip install opencv-python 

After installing, check if it has insatlled properly by running the below python command安装后,通过运行以下 python 命令检查它是否已正确安装

import cv2
print(cv2.__file__)

This will show where the libraries are pointing to.这将显示库指向的位置。

Also, make sure that you don't have any file named cv2 in the same working directory, else your python interpreter will load that file instead of your opencv libraries.此外,请确保您在同一工作目录中没有任何名为 cv2 的文件,否则您的 python 解释器将加载该文件而不是您的 opencv 库。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM