cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
Posted
技术标签:
【中文标题】cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function \'cv::cvtColor\'【英文标题】:cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' 【发布时间】:2021-07-30 02:10:09 【问题描述】:import cv2 #for image processing
import easygui #to open the filebox
import numpy as np #to store image
import imageio #to read image stored at particular path
import sys
import matplotlib.pyplot as plt
import os
import tkinter as tk
from tkinter import filedialog
from tkinter import *
from PIL import ImageTk, Image
top=tk.Tk()
top.geometry('400x400')
top.title('Cartoonify Your Image !')
top.configure(background='white')
label=Label(top,background='#CDCDCD', font=('calibri',20,'bold'))
def upload():
ImagePath=easygui.fileopenbox()
cartoonify(ImagePath)
def cartoonify(ImagePath):
# read the image
originalmage = cv2.imread(ImagePath)
originalmage = cv2.cvtColor(originalmage, cv2.COLOR_BGR2RGB)
#print(image) # image is stored in form of numbers
cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-vi271kac\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
【问题讨论】:
我不认为这个问题是由tkinter
引起的。如果是这样,请删除tkinter
标签。
这能回答你的问题吗? (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
【参考方案1】:
再次检查图片地址。当图像以任何方式未正确加载时,通常会发生这种情况。尝试直接给出地址;类似“C:\\test.jpg”
import cv2
im = cv2.imread("WRONG IMAGE ADDRESS.jpg", 1)
im = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)
更新 您还可以获取脚本的当前文件夹路径并从中加载图像。 想象一下你的文件结构是这样的:
--RootProject
|-img.jpg
|-script.py
那么你也可以这样做:
script.py
import cv2
import sys
im = cv2.imread(sys.path[0]+"/img.jpg", 1)
im = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)
【讨论】:
我在 Windows 上尝试这个时遇到了很多麻烦,无论我做什么,imread 都不能正常工作。在 Linux 上它可以完美运行,所以我认为在 Windows 上使用它的人并不多,因此存在永远无法修复的错误。【参考方案2】:这似乎是 Windows 中的路径问题。我把它改成了这样的完整路径,它起作用了。
文件名 = "D:\Sandbox\Github\opencv-project\Resources\Photos\cats.jpg"
【讨论】:
这已经是其他答案所说的:Try giving the address directly; something like "C:\\test.jpg"
【参考方案3】:
此错误是错误的图像位置。如果假设您在另一个文件夹中的图像意味着这样使用:
img=cv2.imread("../images/car.jpg",1)
【讨论】:
【参考方案4】:如果您的图像文件路径错误,可能会发生这种情况,请添加您的工作文件夹然后使用如下:
image = cv2.imread('eye_face.jpg')
type(image)
那么你的图片类型将显示为numpy.ndarray
,如果你的图片文件路径错误则类型将是NoneType
。
【讨论】:
【参考方案5】:我试图从文件夹中读取图像并且遇到了同样的问题。我在其中一个文件夹中有一个非图像,这是问题所在。
【讨论】:
【参考方案6】:尝试将图像作为路径,要注意的一件事是斜线。使用\\
而不是\
。您的路径必须类似于 D:\\file\\file1\\file2
。
检查它是否工作打印type(cv2.imread(path))
。如果它打印出<class 'numpy.ndarray'>
,那么你就可以开始了。
【讨论】:
【参考方案7】:我通过添加解决了同样的问题:
data = cv2.imread('path_to_your_image', as_grey =True)
然后尝试将 flags = cv2.DFT_COMPLEX_OUTPUT 添加到这一行
dft = cv2.dft(np.float32('your_image'),flags = cv2.DFT_COMPLEX_OUTPUT)
这个问题有很多解决方案。
【讨论】:
以上是关于cv2.error: OpenCV(4.5.2) .error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'的主要内容,如果未能解决你的问题,请参考以下文章
opencv cv2.imread()报错: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘
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.
cv2.error: OpenCV(4.5.5) D:aopencv-pythonopencv-pythonopencvmodulesobjdetectsrccascadedetect
cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘rectangle‘ > Overload resolution
cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘rectangle‘ > Overload resolution