簡體   English   中英

如何在 pycharm 中修復此錯誤? cv2.error: OpenCV(3.4.2) 錯誤: (-215:Assertion failed)

[英]How to fix this error in pycharm? cv2.error: OpenCV(3.4.2) error: (-215:Assertion failed)

我是 python 和 opencv 的新手,我想從我的輸入圖像中裁剪人臉圖像。 我真的不知道哪里出了問題,有人能幫我解決嗎?

我認為輸入圖像的目錄可能有問題。 所以我把所有的'/'都改成了'\\',還是不行。 另外,在這個目錄下,有很多子文件夾,在每個子文件夾中,都有一些原始圖像。

import cv2
import os


def fetch_face_pic(img,face_cascade):
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=10, minSize = (30, 30), flags = 0)

    for(x, y, w, h) in faces:
        crop = img[y:y+h, x:x+w]
    return crop


face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_defalut.xml')

#path_save = '/Users/oysdfx/Desktop/Face-anti-spoofing-master/crop/ImposterCrop'
path_read = '/Users/oysdfx/Desktop/Face-anti-spoofing-master/raw/ImposterRaw'

for file in os.listdir(path_read):
    pic = os.path.join(path_read, file)
    img = cv2.imread(pic)
    crop = fetch_face_pic(img, face_cascade)

    resized_img = cv2.resize(img, (64, 64), interpolation=cv2.INTER_CUBIC)
    cv2.imwrite(pic, resized_img)

實際上我想從輸入圖像中裁剪出人臉,並將它們保存在一個新文件夾中。 我不知道如何實現這一點。 我運行這段代碼並得到如下錯誤:

Traceback (most recent call last):
  File "/Users/oysdfx/Desktop/Undergraduate_Thesis/Face_Anti-Spoofing/crop_face.py", line 86, in <module>
    crop = fetch_face_pic(img, face_cascade)
  File "/Users/oysdfx/Desktop/Undergraduate_Thesis/Face_Anti-Spoofing/crop_face.py", line 70, in fetch_face_pic
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(3.4.2) /opt/concourse/worker/volumes/live/9523d527-1b9e-48e0-7ed0-a36adde286f0/volume/opencv-suite_1535558719691/work/modules/imgproc/src/color.hpp:253: error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'CvtHelper'


Process finished with exit code 1

這與您的 IDE PyCharm 無關。 您的圖像路徑可能是錯誤的。 在繼續之前檢查img是否為None 如果是這樣,打印路徑( pic ),你會發現它是錯誤的。

# [...]

for file in os.listdir(path_read):
    pic = os.path.join(path_read, file)
    img = cv2.imread(pic)
    if img is None:
        raise Exception('Invalid image: {}'.format(pic))
    crop = fetch_face_pic(img, face_cascade)

# [...]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM