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 (-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.