【问题标题】:How can I solve "import cv2, ImportError: DLL load failed " in Python 3.7 and OpenCV 4.1.1 on VsCode?如何解决 VsCode 上 Python 3.7 和 OpenCV 4.1.1 中的“import cv2, ImportError: DLL load failed”?
【发布时间】:2019-12-16 03:25:42
【问题描述】:

我有一个脚本可以通过笔记本电脑的网络摄像头检测人脸。一开始,我使用的是带有 Anaconda 包的 Spyder,它没有为 OpenCV 抛出任何 ImportError,一切都很好。然后我想更改 IDE,因为我只想更改并开始使用 VsCode,但独立于 Anaconda。在对我的代码进行一些改进后,它开始为 OpenCV 抛出此 ImportError,如下所示:

    File "C:/Users/User/Desktop/SeniorProject/EE 492/lbp/FaceDetection.py", line 7, in <module>
    import cv2

    ImportError: DLL load failed: Belirtilen modül bulunamadı.

Belirtilen modül bulunamadı. 最后一行是我的母语,它说找不到指定的模块。 收到此错误消息后,我认为更改 IDE 可能是个好主意,并再次切换到 Spyder(在 Anaconda 上)。但是我在这个 IDE 上也一直遇到同样的错误。然后我搜索了互联网并尝试了一切来帮助我解决问题。 尝试在anaconda上卸载OpenCV,然后重新安装或尝试以下命令: conda 安装 opencv-python 康达安装 opencv-contrib-python pip3 安装 opencv-python pip3 安装 opencv-contrib-python

我什至尝试复制名为 cv2.cp37-win_amd64.pyd 的文件并粘贴到 C:\Python34\DLLs 和 C:\Python34\Lib\site-packages 文件夹,但发生了没变。我什至尝试了 PyCharm,考虑到它可能会有所帮助,但不,它也没有帮助。 我不知道如何解决这个问题。我应该卸载 Anaconda 和 OpenCV 并重新安装吗? 或者也许我可以做一些我在互联网上没有遇到的事情。您的帮助将不胜感激。 不管怎么说,还是要谢谢你! 我将我的原始代码留在下面:

    import cv2
    import sys
    import numpy as np
    import os
    import scanning as sc


    face_classifier = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')          
    eye_classifier = cv2.CascadeClassifier('haarcascade_eye.xml')
    video_capture = cv2.VideoCapture(0)
    img_counter = 0
    imagePath = r'C:\Users\User\Desktop\SeniorProject\EE 492\lbp\images\testing'
    newPath = r'C:\Users\User\Desktop\SeniorProject\EE 492\lbp\images\testing2'
    location = []

    while True:
       _, frame = video_capture.read()
       im_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
       k = cv2.waitKey(1) & 0xFF


     #Detect faces, eyes and smiles in input frame
     faces = face_classifier.detectMultiScale(im_gray, scaleFactor = 1.5, minNeighbors = 3, flags = 
        cv2.CASCADE_SCALE_IMAGE, minSize = (30, 30))

     eyes = eye_classifier.detectMultiScale(im_gray, scaleFactor = 1.5, minNeighbors = 3, flags = 
        cv2.CASCADE_SCALE_IMAGE, minSize=(5, 5), maxSize=(10,10))


     # Draw a rectangle around the faces

     for x, y, w, h in faces:
         cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
         location.append([x,y,w,h])

     # Draw a rectangle around the eyes
     for ex, ey, ew, eh in eyes:
         cv2.rectangle(frame, (ex,ey), (ex+ew, ey+eh), (0, 0, 255), 1)


     # Display the resulting frame
     cv2.imshow('Face Detector', frame)

     if k%256 == 27: #ESC pressed
         break
     elif k%256 == 32: #SPACE pressed
         img_counter += 1
         img_name = "FaceDetect_webcam_{}.png".format(img_counter)
         cv2.imwrite(os.path.join(imagePath, img_name), frame)
         print("{} saved!".format(img_name))

   video_capture.release()

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    首先,我认为您将文件复制到错误的目录,除非您将其重命名为 Python34 可能不是您使用的 3.7 版本。转到您的终端并输入 python —version 检查输出,这是您当前使用的 python 版本。使用pip install opencv-python 看看你之后是否收到错误

    【讨论】:

    • 你是对的。实际上安装了 Python37,但 Python34 是错误的文件夹,我不知道我从哪里得到它。但最后我永远卸载了 Anaconda :) 并重新安装了 Python3.7。然后成功下载 OpenCV 并复制到正确的站点包文件夹。我通过键入 'cv2.__version__' 检查了它是否在 IDLE 上正确完成。但我仍然得到同样的错误。 (DLL 加载失败。)可能是 Python 的版本有问题吗?我要降级到 Python3.6 吗?
    • 我不确定您所做的复制是否真的正确,您是否尝试过我在最初回答中的建议?如果你看到你想要的 python 版本是你的默认版本,pip应该将你的模块安装在正确的包文件夹中。
    • 是的,我已经尝试了您的建议,它返回了我当前使用的 python 版本。这就是为什么我得出结论,我一开始复制到了错误的文件夹,后来又更改了,然后复制到了正确的 site-packages 文件夹。但随后它一直返回相同的错误消息。然后我完全删除了 Python 3.7.4 并安装了 3.7.5,即升级了它,它可以正常工作。我还删除了所有 OpenCV 版本并再次安装了 4.1.1,这样我就可以重新开始了。最后它起作用了,我解决了这个问题。现在它不会抛出任何 DLL 错误。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多