cv2.error: (-215:Assertion failed) !ssize.empty() in function ‘resize‘解决方案

Posted 再学一小会儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cv2.error: (-215:Assertion failed) !ssize.empty() in function ‘resize‘解决方案相关的知识,希望对你有一定的参考价值。

在做手势图像分类的时候,遇到了数据集不均衡的问题。于是对部分图像少的类别进行了数据集扩充。
具体如何扩充的参考了这位博主的方法:
数据集太少怎么办?数据集扩充方法

后续继续对数据集进行训练的时候就遇到了如题目所示的问题:cv2.error: (-215:Assertion failed) !ssize.empty() in function ‘resize‘

第一次遇到这种问题确实不太懂为什么,我也检查了我的路径、文件,发现都没有问题,全程没有出现中文路径或者中文命名。
应该是哪张图片出现了问题,但我的训练集有两万多张图片,要怎么去找有问题的图片也是蛮困难的。

最后我的解决办法:

import os
import cv2

filpath='F:/A_DG_Static/v_3/validv_3'
image_list = os.listdir(filpath)  # 读取文件夹中所有的图片
print(image_list)
i=0
for picname in image_list:
    i += 1
    img = cv2.imread((filpath + '/' + picname), 0)
    try:
        img = cv2.resize(img, (64, 64))
        print(i, picname) #打印当前成功处理的图片数量图片名称
    except :
        print(picname) #打印出有问题的图片名
        break

最后打印出那张图片的名字就是有问题的图片了。

参考了这位博主的办法:
error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize’报错的原因

最后成功找到了有问题的两张图片,把图片删除后就能成功训练了。
虽然也不是我自己想的办法,但也还是记录一下,希望能帮到大家。

如何修复下面的代码我收到 cv2.error [关闭]

【中文标题】如何修复下面的代码我收到 cv2.error [关闭]【英文标题】:How can ı fix the code below I am getting cv2.error [closed] 【发布时间】:2021-11-02 20:48:15 【问题描述】:
import numpy as np
import face_recognition
import cv2
import os
path="C:/Users/HP/Desktop/face1/img/known/"
images=list()
classnames=[]
my_list=os.listdir(path)
for i in my_list:
    currentim=cv2.imread(f'pathi')
    images.append(currentim)
    classnames.append(os.path.splitext(i)[0])
def findenc(images):
    encs=[]
    for img in images :
        img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
        encs.append(face_recognition.face_encodings(img)[0])
    return encs
encs=findenc(images)
print("encoding has ended")
cap=cv2.VideoCapture(0)
while True:
    success,img=cap.read()
    imgsize=cv2.resize(img,(0,0),None,0.25,0.25)
    imgsize=cv2.cvtColor(imgsize,cv2.COLOR_BGR2RGB)
    faces=face_recognition.face_locations(imgsize)[0]
    encodescurf=face_recognition.face_encodings(imgsize)[0]
    for encode,faceloc in zip(encodescurf,faces):
        matches=face_recognition.compare_faces(encs,encode)
        facedis=face_recognition.face_distance(encs,encode)

当我运行代码时我得到 cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-sn_xpupm\opencv\modules\imgproc\src\color .cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' 如何修复该错误

注意:cv2 版本是 '4.5.3' 我使用视觉工作室代码 它给出了第 16 行的错误

【问题讨论】:

如果您需要尽快得到一些东西,请雇用某人。请尊重其他也想得到问题答案的人。 【参考方案1】:

这个错误可能是因为图片加载不正确。检查 cv2.imread 或尝试:

encs = []
for i in my_list:
    img_path = os.path.join(path, i)
    currentim=cv2.imread(img_path) 
    classnames.append(os.path.splitext(i)[0])
    img=cv2.cvtColor(currentim,cv2.COLOR_BGR2RGB)
    encs.append(face_recognition.face_encodings(img)[0])

正确检查图像的路径。

os.path.join() Python 中的方法将各种路径组件连接起来,除了最后一个路径组件外,每个非空部分后面都只有一个目录分隔符('/')。如果要加入的最后一个路径组件为空,则在末尾放置一个目录分隔符('/')。

【讨论】:

它没有工作代码在第 16 行给出错误 嘿尽量避免不必要的功能和存储数据。用上面的代码替换函数和for循环后检查。 这个答案有什么意义? os.path.join?请指出这一点,因此很明显这是您答案的核心。路径的不正确连接可能是这里的一个问题,也可能是其他问题。这是假设太多了。

以上是关于cv2.error: (-215:Assertion failed) !ssize.empty() in function ‘resize‘解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何修复下面的代码我收到 cv2.error [关闭]

cv2.error (-215:Assertion failed) reader.ptr != 函数 cvDrawContours 中的 NULL

opencv cv2.imread()报错: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘

cv2.error: OpenCV(4.5.5) D:aopencv-pythonopencv-pythonopencvmodulesobjdetectsrccascadedetect

cv2.error: C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:325: 错误: (-215) size.widt

成功解决cv2.error: OpenCV(4.7.0) D:aopencv-pythonopencv-pythonopencvmodulesimgcodecssrcloadsave.